¿Cómo puedo configurar un color de fondo diferente para la ventana activa en Emacs?Fondo personalizado para la ventana activa
Respuesta
Si con "ventana" se refiere a la definición de Emacs de ventanas, es decir, paneles, no realmente.
Si con "ventana" te refieres a la concepción de windows de todos los demás, que Emacs llama marcos, entonces sí. He aquí un ejemplo:
(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)
Y si él lo quiere por ventana, recomendaría una línea de modo de video inverso. Si necesita más de una señal visual que eso, abra menos ventanas. – jrockway
Uh, modeline activo, eso es. – jrockway
Me refiero a la ventana de Emacs. Lo más destacado de la línea de modo no es suficiente para mí. Uso una pantalla grande, muchas ventanas están abiertas ... y con bastante frecuencia he comenzado a editar no la ventana que quería editar. Lo intentaré si el modo de video inverso mejora un poco –
Si lo que estamos tratando de lograr es poner de relieve el buffer/marco actual, la forma en que hago que es a través de Highlight-Current-Line. Le muestra la línea donde está el cursor, pero un efecto secundario es que también le muestra en qué búfer/cuadro se encuentra. Puede configurarlo para resaltar todo el búfer, o ver el código para ver cómo lo hacen eso.
Sí, lo que quise decir con "en realidad no" fue que no puede resaltar una ventana, solo un búfer, porque cualquier modificación en el contenido del búfer afectará cada vista del búfer. Para mí, el color de la línea + el cursor parpadeando bien. –
Indeed buffer es mejor término para eso que window. Quiero resaltar el búfer actual :) –
Aquí hay una alternativa que utiliza el color de línea inactiva que coincide con el fondo por lo que la única línea de modo con color es la ventana activa. Tengo un gancho para entrar y salir del minibúfer, y también cuando cambio ventanas. Uso negrita para ciertos elementos de línea de modo como solo lectura y el nombre del archivo, para que el color diferente no se destaque al cambiar de ventana. Cuando ingreso al minibúfer, la línea de modo de la ventana activa queda inactiva hasta que salgo del minibúfer, o cuando cambio de un minibúfer activo (dejándolo abierto) a otra ventana. Tuve que configurar el cuadro de fondo modelado para que coincida también.
(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))
respuesta alternativa (concepto similar): set-face-attribute
es demasiado lento para el cambio de caras durante redisplay
. El método preferido para ajustar caras en ese contexto es con la función face-remap-add-relative
; sin embargo, esa función es un poco complicada de usar porque las caras se acumulan una detrás de la otra y se ensombrecen. Por lo tanto, tendré que revisar el siguiente borrador de respuesta alternativa (en el futuro) para incorporar face-remap-add-relative
- mientras tanto, estoy configurando el face-remapping-alist
manualmente (lo cual no es el método preferido según el manual/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
modo
¡Bonita idea y captura de pantalla inspiradora! – katspaugh
Crosshairs es la mejor opción, creo. No solo llama la atención sobre la ventana activa, sino que también te muestra de inmediato dónde está el cursor de una manera obvia. Puede activarlo/desactivarlo fácilmente (lo ato al C-+
.)
También puede usar crosshairs-toggle-when-idle
como alternativa. No muestra el punto de mira hasta que una demora haya pasado. También es un conmutador.
Por supuesto, puede utilizar puntos de mira junto con una cara mode-line
cara a cara.
Trate Hiwin modo de Yoshida (modo de ventana activa visible): https://github.com/yoshida-mediba/hiwin-mode
funciona como un amuleto – mico
¡Eso funciona perfectamente en emacs 25! –
que estaba usando hiwin-mode
como se sugiere en este tema, pero no es un open issue con tampones de concha (cuando está inactivo, el texto se vuelve invisible). Por lo tanto, otra opción que estoy disfrutando hasta ahora es auto-dim-other-buffers mode.
- 1. Establecer la ventana activa
- 2. Obtener la última ventana activa: Obtener Ventana previamente activa
- 3. Foreground Vs Ventana activa
- 4. área activa más pequeña para UIBarButtonItem personalizado
- 5. ¿Cómo determinar si la ventana actual es la ventana activa?
- 6. Obteniendo el nombre de la ventana activa
- 7. Capturar cambio en la ventana activa (para Linux)
- 8. Obtener texto resaltado de la ventana activa
- 9. Consulte la ventana activa en WPF?
- 10. iPhone - navigationbar Fondo personalizado
- 11. UIPickerView personalizado con color de fondo personalizado
- 12. Deshabilitar la ventana en el fondo
- 13. onItemClickListener no se activa en ArrayAdapter personalizado
- 14. Cómo recuperar el texto seleccionado de la ventana activa
- 15. Identificar de forma exclusiva la ventana activa en OS X
- 16. Obtiene el título actual de la ventana activa en Java
- 17. Obteniendo información de la ventana activa en Java
- 18. CreateProcessAsUser Ventana de creación en la sesión activa
- 19. C# obtener información sobre la ventana activa actual
- 20. ¿Cómo obtener el título de la ventana activa con AutoHotKey?
- 21. UIAppearance Eliminar fondo de NavBar personalizado para UIPopoverController
- 22. Cómo enlazar el fondo de la ventana con el color de fondo de la ventana de un tema?
- 23. Añadir menú contextual personalizado al explorador para el directorio \ fondo
- 24. Android - Configuración de fondo dibujable personalizado para ClickSpan
- 25. UINavigationController personalizado UIToolbar Imagen de fondo
- 26. Snow Leopard & LSUIElement -> la aplicación no se activa correctamente, la ventana no está "activa" a pesar de ser "clave"
- 27. botón de deshabilitar con fondo personalizado android
- 28. Problema de fondo de ListView personalizado
- 29. Elemento de acción personalizado de administración activa Nombre del recurso
- 30. WPF Ventana Fondo ImageBrush no mosaico
intente 'hiwin-mode' según lo propuesto [aquí] (https://stackoverflow.com/a/24852800/1845302) –