90 lines
3.1 KiB
EmacsLisp
90 lines
3.1 KiB
EmacsLisp
|
;;; buffer-bg.el --- Changing background color of windows
|
||
|
;;
|
||
|
;; Author: Lennart Borgman (lennart O borgman A gmail O com)
|
||
|
;; Created: 2008-05-22T19:06:23+0200 Thu
|
||
|
;; Version: 0.5
|
||
|
;; Last-Updated: 2008-05-22T23:19:55+0200 Thu
|
||
|
;; URL: http://www.emacswiki.org/cgi-bin/wiki/buffer-bg.el
|
||
|
;; Keywords:
|
||
|
;; Compatibility:
|
||
|
;;
|
||
|
;; Features that might be required by this library:
|
||
|
;;
|
||
|
;; None
|
||
|
;;
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;;
|
||
|
;;; Commentary:
|
||
|
;;
|
||
|
;; There is currently no way to change background colors of Emacs
|
||
|
;; windows. This library implements a workaround using overlays.
|
||
|
;;
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;;
|
||
|
;;; Change log:
|
||
|
;;
|
||
|
;;
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;;
|
||
|
;; This program is free software; you can redistribute it and/or
|
||
|
;; modify it under the terms of the GNU General Public License as
|
||
|
;; published by the Free Software Foundation; either version 2, or
|
||
|
;; (at your option) any later version.
|
||
|
;;
|
||
|
;; This program is distributed in the hope that it will be useful,
|
||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
;; General Public License for more details.
|
||
|
;;
|
||
|
;; You should have received a copy of the GNU General Public License
|
||
|
;; along with this program; see the file COPYING. If not, write to
|
||
|
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
||
|
;; Floor, Boston, MA 02110-1301, USA.
|
||
|
;;
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;;
|
||
|
;;; Code:
|
||
|
|
||
|
(defvar buffer-bg-overlay nil)
|
||
|
(put 'buffer-bg-overlay 'permanent-local t)
|
||
|
|
||
|
;;;###autoload
|
||
|
(defun buffer-bg-set-color (color buffer)
|
||
|
"Add an overlay with background color COLOR to buffer BUFFER.
|
||
|
If COLOR is nil remove previously added overlay."
|
||
|
(interactive
|
||
|
(let* ((prompt (if buffer-bg-overlay
|
||
|
"Background color (empty string to remove): "
|
||
|
"Background color: "))
|
||
|
(color (read-color prompt nil t)))
|
||
|
(when (= 0 (length color))
|
||
|
(setq color nil))
|
||
|
(list color (current-buffer))
|
||
|
))
|
||
|
(if (not color)
|
||
|
(when buffer-bg-overlay
|
||
|
(delete-overlay buffer-bg-overlay)
|
||
|
(setq buffer-bg-overlay nil))
|
||
|
(save-restriction
|
||
|
(widen)
|
||
|
(setq buffer-bg-overlay
|
||
|
(make-overlay (point-min) (point-max) nil nil t))
|
||
|
;; Fix-me: Let the overlay have priority 0 which is the
|
||
|
;; lowest. Change this to below char properties if this is ever
|
||
|
;; allowed in Emacs.
|
||
|
(overlay-put buffer-bg-overlay 'priority 0)
|
||
|
(let* ((bg-face (list :background color))
|
||
|
(bg-after (propertize (make-string 10 ?\n)
|
||
|
'face bg-face
|
||
|
'intangible t)))
|
||
|
(overlay-put buffer-bg-overlay 'face bg-face)
|
||
|
;; This is just confusing, don't use it:
|
||
|
;;(overlay-put buffer-bg-overlay 'after-string bg-after)
|
||
|
)
|
||
|
)))
|
||
|
|
||
|
|
||
|
(provide 'buffer-bg)
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;;; buffer-bg.el ends here
|