Come è possibile configurare un colore di sfondo diverso per la finestra attiva in Emacs?Sfondo personalizzato per la finestra attiva
risposta
Se per "finestra" si intende la definizione di finestre di Emacs, vale a dire i riquadri, non proprio.
Se per "finestra" si intende la concezione di finestre di tutti gli altri, che Emacs chiama frame, quindi sì. Ecco un esempio:
(defadvice handle-switch-frame (around switch-frame-set-background)
(set-background-color "white")
ad-do-it
(set-background-color "yellow"))
(ad-activate 'handle-switch-frame)
(defadvice delete-frame (after delete-frame-set-background)
(set-background-color "yellow"))
(ad-activate 'delete-frame)
E se lo desidera per finestra, vorrei solo raccomandare una modeline video inversa. Se hai bisogno di più di un segnale visivo, apri meno finestre. – jrockway
Uh, modeline attiva, cioè. – jrockway
Intendo la finestra di Emacs. L'evidenziazione della linea di modalità non è abbastanza per me. Io uso un grande schermo, molte finestre sono aperte ... e molto spesso ho iniziato a modificare non la finestra che volevo modificare. Proverò se la modalità video inverso sarà un po 'migliorata –
Se ciò che si sta cercando di raggiungere è quello di evidenziare il buffer/frame corrente, il mio modo di fare che è attraverso Highlight-Current-Line. Ti mostra la linea in cui si trova il cursore, ma un effetto collaterale è che mostra anche in quale buffer/frame ti trovi. Potresti configurarlo per evidenziare l'intero buffer, o cercare nel codice per vedere come fanno esso.
Sì, ciò che intendevo per "non proprio" era che non si può evidenziare una finestra, solo un buffer, perché qualsiasi modifica al contenuto del buffer influirà su ogni vista del buffer. Per me, il colore del modellino + il cursore lampeggiano bene. –
In effetti il buffer è un termine migliore per quello della finestra. Voglio evidenziare il buffer corrente :) –
Questa è un'alternativa che utilizza il colore inattivo della modellazione corrispondente allo sfondo in modo che l'unica finestra con colore sia la finestra attiva. Ho un gancio per entrare e uscire dal minibuffer e anche quando cambio finestre. Io uso grassetto per alcune cose di modeline come sola lettura e il nome del file, in modo che il diverso colore non risulti quando si passa a Windows. Quando inserisco il minibuffer, la modeline della finestra attiva diventa inattiva fino a quando esco dal minibuffer, o quando passo da un minibuffer attivo (lasciandolo aperto) ad un'altra finestra. Ho dovuto impostare anche la casella dello sfondo modello per abbinarla.
(set-face-attribute 'default nil :background "black" :foreground "white"
:font "Courier" :height 180)
(set-face-attribute 'mode-line nil
:height 160 ;; affects everything
:foreground "black" :background "gray70")
(set-face-attribute 'mode-line-inactive nil
:foreground "gray70" :background "black" :box '(:line-width 1 :color "black"))
(defun enter-minibuffer-setup()
(whitespace-mode t)
(set-face-attribute 'mode-line nil
:height 160 :foreground "gray70" :background "black" :box '(:line-width 1 :color "black"))
(set-face-attribute 'minibuffer-prompt nil :background "black" :foreground "cyan")
(set (make-local-variable 'face-remapping-alist)
'((default :background "black" :foreground "yellow"))))
(defun exit-minibuffer-setup()
(cond
((or save-as-variable multi-extract-variable multi-attach-variable)
(set-face-attribute 'mode-line nil :height 160 :foreground "black" :background "#eab700"))
(t (set-face-attribute 'mode-line nil :height 160 :foreground "black" :background "gray70" :box nil)))
(set-face-attribute 'minibuffer-prompt nil :background "black" :foreground "cyan"))
(add-hook 'minibuffer-setup-hook 'enter-minibuffer-setup)
(add-hook 'minibuffer-exit-hook 'exit-minibuffer-setup)
(defun lawlist-minibuffer-conditions()
(cond
((minibufferp)
(set-face-attribute 'mode-line nil
:height 160 :foreground "gray70" :background "black" :box '(:line-width 1 :color "black"))
(set-face-attribute 'minibuffer-prompt nil :background "black" :foreground "cyan"))
(t
(set-face-attribute 'mode-line nil
:height 160 :foreground "black" :background "gray70")
(set-face-attribute 'minibuffer-prompt nil :background "black" :foreground "gray70"))))
(defun lawlist-forward-window()
(interactive)
(other-window 1)
(lawlist-minibuffer-conditions))
(defun lawlist-backward-window()
(interactive)
(other-window -1)
(lawlist-minibuffer-conditions))
ALTERNATIVA RISPOSTA (concetto simile): set-face-attribute
è troppo lento per cambiare volti durante redisplay
. Il metodo preferito per regolare i volti in quel contesto è con la funzione face-remap-add-relative
; tuttavia, questa funzione è un po 'complicata da usare perché i volti si accumulano uno dietro l'altro e diventano ombreggiati. Quindi, dovrò rivedere la seguente bozza di risposta alternativa (in futuro) per incorporare face-remap-add-relative
- nel frattempo, sto impostando manualmente lo face-remapping-alist
(che non è il metodo preferito secondo il manuale/doc-string).
(defvar modeline-selected-window nil)
(let ((default-background (face-background 'default nil 'default)))
(set-face-attribute 'mode-line-inactive nil :background default-background :box nil))
(defun modeline-record-selected-window()
(setq modeline-selected-window (selected-window)))
(defun modeline-update-function()
(cond
((minibufferp)
(let ((default-background (face-background 'default nil 'default)))
(with-selected-window (minibuffer-window)
(setq-local face-remapping-alist '(
(default :foreground "blue")
(minibuffer-prompt :foreground "red"))))
(setq-default face-remapping-alist `((mode-line ,'mode-line-inactive)))))
(t
(with-selected-window (minibuffer-window)
(when (local-variable-p 'face-remapping-alist)
(kill-local-variable 'face-remapping-alist)))
(setq-default face-remapping-alist nil))))
(defun modeline-set-format()
(setq mode-line-format '(
(:eval
(if (eq modeline-selected-window (selected-window))
(propertize "SELECTED WINDOW" 'face 'font-lock-warning-face)
(propertize "NOT-SELECTED WINDOW" 'face 'font-lock-keyword-face)))))
;; next two lines make the affect immediately apparent
(setq modeline-selected-window (selected-window))
(force-mode-line-update))
(define-minor-mode modeline-mode
"This is a minor-mode for `modeline-mode`."
:init-value nil
:lighter " ML"
:keymap nil
:global t
:group nil
(cond
(modeline-mode
(add-hook 'post-command-hook 'modeline-record-selected-window)
(add-hook 'buffer-list-update-hook 'modeline-update-function)
(add-hook 'text-mode-hook 'modeline-set-format)
(when (called-interactively-p 'any)
(message "Globally turned ON `modeline-mode`.")))
(t
(remove-hook 'post-command-hook 'modeline-record-selected-window)
(remove-hook 'buffer-list-update-hook 'modeline-update-function)
(remove-hook 'text-mode-hook 'modeline-set-format)
(when (called-interactively-p 'any)
(message "Globally turned OFF `modeline-mode`.")))))
(modeline-mode 1) ;; globally turn on minor-mode
modalità
Bella idea e screenshot ispiratore! – katspaugh
Crosshairs è la soluzione migliore, credo. Non solo attira l'attenzione sulla finestra attiva, ma mostra anche immediatamente dove il cursore si trova in un modo ovvio. Si può facilmente attivare/disattivare (collegarlo a C-+
.)
In alternativa è anche possibile utilizzare crosshairs-toggle-when-idle
. Non mostra il mirino finché non è trascorso un ritardo. Anche questo è un interruttore.
Ovviamente è possibile utilizzare mirini insieme a una faccia in-faccia mode-line
.
Prova HIWIN-mode di Yoshida (visibile in modalità finestra attiva): https://github.com/yoshida-mediba/hiwin-mode
funziona come un fascino – mico
Che funziona perfettamente in emacs 25! –
usavo hiwin-mode
come suggerito in questa discussione, ma c'è un open issue con buffer di shell (quando inattivo, il testo diventa invisibile).
Pertanto, un'altra opzione che mi sto godendo finora è auto-dim-other-buffers mode.
- 1. Attiva finestra
- 2. quale finestra è attiva
- 3. Trova e attiva la finestra di un'applicazione
- 4. Capture cambia in finestra attiva (per linux)
- 5. iPhone - NavigationBar Sfondo personalizzato
- 6. Sfondo personalizzato/sfondo trasparente su UIBarButtonItem?
- 7. Primo piano Vs Finestra attiva
- 8. UIAseguenza Rimuovi sfondo NavBar personalizzato per MFMailComposeViewController
- 9. Selettore personalizzato per lo sfondo dell'elenco
- 10. Creare un disegnabile sfondo personalizzato per un'EditText
- 11. UIAppearance Rimuovi sfondo NavBar personalizzato per UIPopoverController
- 12. Emacs, attiva una finestra specifica
- 13. personalizzato UIPickerView con sfondo personalizzato a colori
- 14. Come si attiva un evento personalizzato da un controllo utente?
- 15. Identificare in modo univoco la finestra attiva su OS X
- 16. Come monitorare la finestra attiva su un PC remoto
- 17. Content-Disposition: allegato che non attiva la finestra di download
- 18. jQuery attiva l'evento personalizzato in modo sincrono?
- 19. Personalizzato Android Expandablelistview non si attiva suChildClick
- 20. X11 screenshot della finestra attiva non riesce per GTK windows
- 21. Impostare il colore di sfondo per la barra del titolo della finestra di dialogo?
- 22. Ottenere il nome della finestra attiva
- 23. sfondo finestra di dialogo personalizzata Android
- 24. Ottiene il testo evidenziato dalla finestra attiva
- 25. Snow Leopard & LSUIElement -> l'applicazione non si attiva correttamente, finestra non "attiva" nonostante sia "chiave"
- 26. UINavigationController personalizzato UIToolbar Immagine di sfondo
- 27. sfondo personalizzato per activatedBackgroundIndicator su ActionBarSherlock non funziona
- 28. Sfondo personalizzato in NSTableView basato su visualizzazione
- 29. Come associare lo sfondo della finestra al colore di sfondo della finestra di un tema?
- 30. Android personalizzato sfondo xml attributo di invio
provare 'hiwin-mode' come proposto [qui] (https://stackoverflow.com/a/24852800/1845302) –