summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2010-12-05 12:41:38 +0100
committerGravatar Tom Willemsen2010-12-05 12:41:38 +0100
commit15d8264356d0e02a98f388b66020fd1fdae93a16 (patch)
treef339e2e8dab3bd5ddff665210c86722d74379927
parent608117225178a49638e3ec663b1940b0dc2d564e (diff)
downloaddotfiles-15d8264356d0e02a98f388b66020fd1fdae93a16.tar.gz
dotfiles-15d8264356d0e02a98f388b66020fd1fdae93a16.zip
Added emacs config
-rw-r--r--.gitignore5
-rw-r--r--emacs314
-rw-r--r--emacs.d/auto-complete-config.el480
-rw-r--r--emacs.d/auto-complete.el1897
-rw-r--r--emacs.d/autopair.el1036
-rw-r--r--emacs.d/batch-mode.el156
-rw-r--r--emacs.d/color-theme-gruber-darker.el101
-rw-r--r--emacs.d/color-theme-vibrant-ink.el18
-rw-r--r--emacs.d/color-theme-weirdness.el37
-rw-r--r--emacs.d/color-theme.el1668
-rw-r--r--emacs.d/csharp-mode.el1977
-rw-r--r--emacs.d/functions.el45
-rw-r--r--emacs.d/javascript.el707
-rw-r--r--emacs.d/manage-org.el40
-rw-r--r--emacs.d/minimap.el630
-rw-r--r--emacs.d/popup.el1061
-rw-r--r--emacs.d/rainbow-mode.el207
-rw-r--r--emacs.d/sqlplus.el5151
-rw-r--r--emacs.d/tabbar.el1932
-rw-r--r--emacs.d/themes/color-theme-example.el22
-rw-r--r--emacs.d/themes/color-theme-library.el13539
-rw-r--r--emacs.d/vala-mode.el395
-rw-r--r--emacs.d/zenburn.el1179
-rw-r--r--install.bat2
-rwxr-xr-xinstall.sh25
25 files changed, 32610 insertions, 14 deletions
diff --git a/.gitignore b/.gitignore
index 1a35d91..6c0be8f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,11 @@
*~
*session.*
*\#*
-.emacs.d/ac-comphist.dat
+*.dat
local_*
-local_rc.lua
feeds
fetchlog
log
error.log
+*.elc
+auto-save-list
diff --git a/emacs b/emacs
new file mode 100644
index 0000000..ec2dc6a
--- /dev/null
+++ b/emacs
@@ -0,0 +1,314 @@
+;; -*- mode: Emacs-Lisp; mode: whitespace -*-
+(add-to-list 'load-path "~/.emacs.d")
+
+;; Requires
+(require 'paren)
+(require 'uniquify)
+(require 'autopair)
+(require 'color-theme)
+(require 'flymake)
+(require 'org-install)
+(require 'zenburn)
+(require 'lua-mode)
+(require 'tabbar)
+(require 'minimap)
+(require 'manage-org)
+
+;; Auto complete
+(require 'auto-complete-config)
+(add-to-list 'ac-dictionary-directories "~/.emacs.d//ac-dict")
+(ac-config-default)
+
+;; Autoloads
+(autoload 'vala-mode
+ "vala-mode.elc" "A Major mode for editing Vala files" t)
+(autoload 'csharp-mode
+ "csharp-mode.elc" "A Major mode for editing C# files" t)
+(autoload 'javascript-mode
+ "javascript.elc" "A Major mode for editing JavaScript files" t)
+(autoload 'sqlplus-mode
+ "sqlplus,elc" "A Major mode for communicating with Oracle" t)
+(autoload 'batch-mode
+ "batch-mode.elc" "A Major mode for editing Batch files" t)
+(autoload 'rainbow-mode
+ "rainbow-mode.elc" "A Minor mode for showing colors inline" t)
+
+;; Functions
+(require 'functions)
+
+;; Platform specifics
+(if (eq system-type 'gnu/linux) ; if we're running linux
+ (set-frame-font "-xos4-terminus-medium-*-*-*-14-*-*-*-*-*-*-*"))
+
+;; Variables
+(setq
+ inhibit-startup-message t ; don't show welcom screen
+ require-final-newline t ; always append a newline to a file, if
+ ; it doesn't have one
+ font-lock-maximum-decoration t ; denotes my interest in maximum
+ ; possible fontification
+ uniquify-buffer-name-style 'reverse ; reverse uniquify file names
+ backup-directory-alist `((".*" . ,temporary-file-directory))
+ ; backup file location
+ auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
+ ; autosave file location
+ whitespace-line-column 80 ; change color after the 80th column
+ whitespace-style '(tabs trailing lines-tail)
+ inhibit-default-init t)
+
+(setq org-todo-keywords (quote ((sequence "TODO(t)"
+ "NEXT(n)"
+ "|" "Done(d!/!)")
+ (sequence "WAITING(w@/!)"
+ "SOMEDAY(s!)"
+ "|" "CANCELLED(c@/!)")
+ (sequence "QUOTE(q!)"
+ "QUOTED(Q!)"
+ "|" "APPROVED(A@)"
+ "EXPIRED(E@)"
+ "REJECTED(R@)")
+ (sequence "OPEN(O)"
+ "|" "CLOSED(C)")) ))
+(setq org-todo-keyword-faces
+ (quote (("TODO" :foreground "red" :weight bold)
+ ("NEXT" :foreground "blue" :weight bold)
+ ("DONE" :foreground "forest green" :weight bold)
+ ("WAITING" :foreground "yellow" :weight bold)
+ ("SOMEDAY" :foreground "goldenrod" :weight bold)
+ ("CANCELLED" :foreground "orangered" :weight bold)
+ ("QUOTE" :foreground "hotpink" :weight bold)
+ ("QUOTED" :foreground "indianred1" :weight bold)
+ ("APPROVED" :foreground "forest green" :weight bold)
+ ("EXPIRED" :foreground "olivedrab1" :weight bold)
+ ("REJECTED" :foreground "olivedrab" :weight bold)
+ ("OPEN" :foreground "magenta" :weight bold)
+ ("CLOSED" :foreground "forest green" :weight bold))))
+(setq org-use-fast-todo-selection t)
+(setq org-todo-state-tags-triggers
+ (quote (("CANCELLED"
+ ("CANCELLED" . t))
+ ("WAITING"
+ ("WAITING" . t))
+ ("SOMEDAY"
+ ("WAITING" . t))
+ (done
+ ("WAITING"))
+ ("TODO"
+ ("WAITING")
+ ("CANCELLED"))
+ ("NEXT"
+ ("WAITING"))
+ ("DONE"
+ ("WAITING")
+ ("CANCELED")))))
+(setq org-default-notes-file "~/prj/org/refile.org")
+(setq org-capture-templates
+ (quote (("t" "todo" entry (file "~/prj/org/refile.org") "* TODO %?
+%U
+%a" :clock-in t :clock-resume t)
+ ("n" "note" entry (file "~/prj/org/refile.org") "* %?
+%U
+%a
+:CLOCK:
+:END:" :clock-in t :clock-resume t))))
+(setq org-completion-use-ido t) ; Use IDO for target completion
+(setq org-refile-targets
+ (quote ((org-agenda-files :maxlevel . 5) (nil :maxlevel . 5))))
+ ; Targets include this file and any file
+ ; and any file contributing to the
+ ; agenda - up to 5 levels deep
+(setq org-refile-use-outline-path (quote file))
+ ; Targets start with the file name -
+ ; allows creating level 1 tasks
+(setq org-outline-path-complete-in-steps t)
+ ; Targets complete in steps so we start
+ ; with filename, TAB shows the next
+ ; level of targets etc
+(setq org-refile-allow-creating-parent-nodes (quote confirm))
+ ; Allow refile to create parent tasks
+ ; with confirmation
+(setq org-agenda-custom-commands
+ (quote
+ (("w" "Tasks waiting on something"
+ tags "WAITING/!"
+ ((org-use-tag-inheritance nil)
+ (org-agenda-todo-ignore-scheduled nil)
+ (org-agenda-todo-ignore-deadlines nil)
+ (org-agenda-todo-ignore-with-date nil)
+ (org-agenda-overriding-header "Waiting Tasks")))
+ ("r" "Refile New Notes and Tasks"
+ tags "LEVEL=1+REFILE"
+ ((org-agenda-todo-ignore-with-date nil)
+ (org-agenda-todo-ignore-deadlines nil)
+ (org-agenda-todo-ignore-scheduled nil)
+ (org-agenda-overriding-header "Tasks to Refile")))
+ ("N" "Notes"
+ tags "NOTE"
+ ((org-agenda-overriding-header "Notes")))
+ ("n" "Next"
+ tags-todo "-WAITING-CANCELLED/!NEXT"
+ ((org-agenda-overriding-heaer "Next Tasks")))
+ ("p" "Projects"
+ tags-todo "LEVEL=2-REFILE|LEVEL=1+REFILE/!-DONE-CANCELLED"
+ (;(org-agenda-skip-function 'bh/skip-non-projects)
+ (org-agenda-overriding-header "Projects")))
+ ("o" "other (Non-Project) tasks"
+ tags-todo "LEVEL=2-REFILE|LEVEL=1+REFILE/!-DONE-CANCELLED"
+ (;(org-agenda-skip-function 'bh/skip-projects)
+ (org-agenda-overriding-header "Other Non-Project Tasks")))
+ ("A" "Tasks to be Archived"
+ tags "LEVEL=2-REFILE/DONE|CANCELLED"
+ ((org-agenda-overriding-header "Tasks to Archive")))
+ ("h" "Habits"
+ tags "STYLE=\"habit\""
+ ((org-agenda-todo-ignore-with-date nil)
+ (org-agenda-todo-ignore-scheduled nil)
+ (org-agenda-todo-ignore-deadlines nil)
+ (org-agenda-overriding-header "Habits")))
+ ("#" "Stuck Projects"
+ tags-todo "LEVEL=2-REFILE|LEVEL=1+REFILE/!-DONE-CANCELLED"
+ ((org-agenda-skip-function 'bh/skip-non-stuck-projects)
+ (org-agenda-overriding-header "Stuck Projects")))
+ ("c" "Select default clocking task"
+ tags "LEVEL=2-REFILE"
+ ((org-agenda-skip-function
+ '(org-agenda-skip-subree-if 'notregexp "^\\*\\* Organization"))
+ (org-agenda-overriding-header
+ "Set default clocking task with C-u C-u I"))))))
+(setq-default indent-tabs-mode nil) ; spaces, no tabs
+
+(fset 'yes-or-no-p 'y-or-n-p) ; switch yes or no answers to y or n
+ ; answers
+
+;; Mode settings
+( tool-bar-mode -1) ; no toolbar
+( menu-bar-mode -1) ; no menu
+( line-number-mode -1) ; don't show line numbers in splitter
+( global-linum-mode t) ; show line numbers in gutter
+( column-number-mode t) ; show column numbers in splitter
+(global-font-lock-mode t) ; show syntax highlighting
+( show-paren-mode t) ; show matching parens
+( autopair-global-mode ) ; enable autopair mode
+(delete-selection-mode t) ; delete selection upon typing
+(global-auto-complete-mode -1) ; don't enable autocomplete for
+ ; everything
+
+;; Keybindings
+(global-set-key "\C-m" 'newline-and-indent) ; Automatically indent on newline
+;;; Org Mode
+(global-set-key "\C-cl" 'org-store-link )
+(global-set-key "\C-ca" 'org-agenda )
+(global-set-key "\C-cb" 'org-iswitchb )
+(global-set-key (kbd "<f12>") 'org-agenda )
+;(global-set-key (kbd "<f5>") 'bh/org-todo )
+;(global-set-key (kbd "<S-f5>") 'bh/widen )
+(global-set-key (kbd "<f7>") 'set-truncate-lines )
+(global-set-key (kbd "<f8>") 'org-cycle-agenda-files )
+;(global-set-key (kbd "<f9> b") 'bbdb )
+(global-set-key (kbd "<f9> c") 'calendar )
+(global-set-key (kbd "<f9> f") 'boxquote-insert-file )
+;(global-set-key (kbd "<f9> g") 'gnus )
+(global-set-key (kbd "<f9> h") 'bh/hide-other )
+;(global-set-key (kbd "<f9> i") 'bh/org-info )
+;(global-set-key (kbd "<f9> I") 'bh/clock-in )
+;(global-set-key (kbd "<f9> O") 'bh/clock-out )
+(global-set-key (kbd "<f9> r") 'boxquote-region )
+(global-set-key (kbd "<f9> s") 'bh/go-to-scratch )
+;(global-set-key (kbd "<f9> t") 'bh/insert-inactive-timestamp)
+(global-set-key (kbd "<f9> u") 'bh/untabify )
+(global-set-key (kbd "<f9> v") 'visible-mode )
+;(global-set-key (kbd "<f9> SPC") 'bh/clock-in-last-task )
+(global-set-key (kbd "C-<f9>") 'previous-buffer )
+(global-set-key (kbd "C-x n r") 'narrow-to-region )
+(global-set-key (kbd "C-<f10>") 'next-buffer )
+(global-set-key (kbd "<f11>") 'org-clock-goto )
+(global-set-key (kbd "C-<f11>") 'org-clock-in )
+(global-set-key (kbd "C-s-<f12>") 'bh/save-then-publish )
+(global-set-key (kbd "M-<f11>") 'org-resolve-clocks )
+(global-set-key (kbd "C-M-r") 'org-capture )
+(global-set-key (kbd "M-<f9>") 'bh/killframe )
+(global-set-key [C-next] 'tabbar-forward )
+(global-set-key [C-prior] 'tabbar-backward )
+(global-set-key [C-tab] 'hs-toggle-hiding )
+
+;; File associations
+(add-to-list 'auto-mode-alist '("\\.vala$" . vala-mode))
+(add-to-list 'auto-mode-alist '("\\.vapi$" . vala-mode))
+(add-to-list 'auto-mode-alist '("\\.cs$" . csharp-mode))
+(add-to-list 'auto-mode-alist '("\\.bat$" . batch-mode))
+
+(add-to-list 'file-coding-system-alist '("\\.vala$" . utf-8))
+(add-to-list 'file-coding-system-alist '("\\.vapi$" . utf-8))
+
+(add-to-list 'compilation-finish-functions 'my-comp-finish-function)
+
+;; Color theme
+;;(require 'color-theme-weirdness)
+(color-theme-zenburn)
+
+;; Hooks
+(add-hook 'find-file-hook 'flymake-find-file-hook)
+(add-hook 'find-file-hook
+ (lambda ()
+ (whitespace-mode t)))
+(add-hook 'after-save-hook
+ (lambda ()
+ (setq fname (buffer-file-name))
+ (setq suffix (file-name-extension fname))
+
+ (if (string-equal suffix "el")
+ (byte-compile-file fname))))
+;;; C
+(add-hook 'c-mode-hook
+ (lambda ()
+ (whitespace-mode t)
+ (hs-minor-mode t)))
+;;; CSS
+(add-hook 'css-mode-hook
+ (lambda ()
+ (rainbow-mode)))
+;;; Emacs Lisp
+(add-hook 'emacs-lisp-mode-hook
+ (lambda ()
+ (whitespace-mode t)
+ (auto-complete-mode t)))
+;;; Interactive Lisp
+(add-hook 'lisp-interaction-mode-hook
+ (lambda ()
+ (whitespace-mode t)
+ (auto-complete-mode t)))
+;;; Org
+(add-hook 'org-mode-hook
+ (lambda ()
+ (flyspell-mode 1)
+ (auto-fill-mode 1)
+ (message "org-mode started")))
+
+(defvar org-loaded nil)
+(add-hook 'org-agenda-mode-hook
+ (lambda ()
+ (if (not org-loaded)
+ (progn
+ (add-hook 'kill-emacs-hook
+ (lambda ()
+ (save-org-files)
+ (push-org-files)))
+ (get-org-files)
+ (setq org-loaded t)))))
+(if (not (file-exists-p "~/prj/org"))
+ (clone-org-files))
+
+(custom-set-variables
+ ;; custom-set-variables was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(org-agenda-files (quote ("~/prj/org/iactor.org" "~/prj/org/peitsman.org" "~/prj/org/tgn.org" "~/Documents/iACTOR/tasks.org" "~/prj/org/seiko.org" "~/prj/org/projects.org" "~/prj/org/refile.org" "~/prj/org/aethon.org")))
+ '(tabbar-mode t nil (tabbar)))
+(custom-set-faces
+ ;; custom-set-faces was added by Custom.
+ ;; If you edit it by hand, you could mess it up, so be careful.
+ ;; Your init file should contain only one such instance.
+ ;; If there is more than one, they won't work right.
+ '(tabbar-selected ((t (:inherit tabbar-default :background "#1E2320" :foreground "#F0DFAF"))))
+ '(tabbar-unselected ((nil (:background "#3F3F3F" :foreground "#DCDCCC")))))
diff --git a/emacs.d/auto-complete-config.el b/emacs.d/auto-complete-config.el
new file mode 100644
index 0000000..26ec044
--- /dev/null
+++ b/emacs.d/auto-complete-config.el
@@ -0,0 +1,480 @@
+;;; auto-complete-config.el --- auto-complete additional configuations
+
+;; Copyright (C) 2009, 2010 Tomohiro Matsuyama
+
+;; Author: Tomohiro Matsuyama <m2ym.pub@gmail.com>
+;; Keywords: convenience
+;; Version: 1.3
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl))
+
+(require 'auto-complete)
+
+
+
+;;;; Additional sources
+
+;; imenu
+
+(defvar ac-imenu-index nil)
+
+(ac-clear-variable-every-10-minutes 'ac-imenu-index)
+
+(defun ac-imenu-candidates ()
+ (loop with i = 0
+ with stack = (progn
+ (unless (local-variable-p 'ac-imenu-index)
+ (make-local-variable 'ac-imenu-index))
+ (or ac-imenu-index
+ (setq ac-imenu-index
+ (ignore-errors
+ (with-no-warnings
+ (imenu--make-index-alist))))))
+ with result
+ while (and stack (or (not (integerp ac-limit))
+ (< i ac-limit)))
+ for node = (pop stack)
+ if (consp node)
+ do
+ (let ((car (car node))
+ (cdr (cdr node)))
+ (if (consp cdr)
+ (mapc (lambda (child)
+ (push child stack))
+ cdr)
+ (when (and (stringp car)
+ (string-match (concat "^" (regexp-quote ac-prefix)) car))
+ ;; Remove extra characters
+ (if (string-match "^.*\\(()\\|=\\|<>\\)$" car)
+ (setq car (substring car 0 (match-beginning 1))))
+ (push car result)
+ (incf i))))
+ finally return (nreverse result)))
+
+(ac-define-source imenu
+ '((depends imenu)
+ (candidates . ac-imenu-candidates)
+ (symbol . "s")))
+
+;; gtags
+
+(defface ac-gtags-candidate-face
+ '((t (:background "lightgray" :foreground "navy")))
+ "Face for gtags candidate"
+ :group 'auto-complete)
+
+(defface ac-gtags-selection-face
+ '((t (:background "navy" :foreground "white")))
+ "Face for the gtags selected candidate."
+ :group 'auto-complete)
+
+(defun ac-gtags-candidate ()
+ (ignore-errors
+ (split-string (shell-command-to-string (format "global -ci %s" ac-prefix)) "\n")))
+
+(ac-define-source gtags
+ '((candidates . ac-gtags-candidate)
+ (candidate-face . ac-gtags-candidate-face)
+ (selection-face . ac-gtags-selection-face)
+ (requires . 3)
+ (symbol . "s")))
+
+;; yasnippet
+
+(defface ac-yasnippet-candidate-face
+ '((t (:background "sandybrown" :foreground "black")))
+ "Face for yasnippet candidate."
+ :group 'auto-complete)
+
+(defface ac-yasnippet-selection-face
+ '((t (:background "coral3" :foreground "white")))
+ "Face for the yasnippet selected candidate."
+ :group 'auto-complete)
+
+(defun ac-yasnippet-table-hash (table)
+ (cond
+ ((fboundp 'yas/snippet-table-hash)
+ (yas/snippet-table-hash table))
+ ((fboundp 'yas/table-hash)
+ (yas/table-hash table))))
+
+(defun ac-yasnippet-table-parent (table)
+ (cond
+ ((fboundp 'yas/snippet-table-parent)
+ (yas/snippet-table-parent table))
+ ((fboundp 'yas/table-parent)
+ (yas/table-parent table))))
+
+(defun ac-yasnippet-candidate-1 (table)
+ (with-no-warnings
+ (let ((hashtab (ac-yasnippet-table-hash table))
+ (parent (ac-yasnippet-table-parent table))
+ candidates)
+ (maphash (lambda (key value)
+ (push key candidates))
+ hashtab)
+ (setq candidates (all-completions ac-prefix (nreverse candidates)))
+ (if parent
+ (setq candidates
+ (append candidates (ac-yasnippet-candidate-1 parent))))
+ candidates)))
+
+(defun ac-yasnippet-candidates ()
+ (with-no-warnings
+ (if (fboundp 'yas/get-snippet-tables)
+ ;; >0.6.0
+ (apply 'append (mapcar 'ac-yasnippet-candidate-1 (yas/get-snippet-tables major-mode)))
+ (let ((table
+ (if (fboundp 'yas/snippet-table)
+ ;; <0.6.0
+ (yas/snippet-table major-mode)
+ ;; 0.6.0
+ (yas/current-snippet-table))))
+ (if table
+ (ac-yasnippet-candidate-1 table))))))
+
+(ac-define-source yasnippet
+ '((depends yasnippet)
+ (candidates . ac-yasnippet-candidates)
+ (action . yas/expand)
+ (candidate-face . ac-yasnippet-candidate-face)
+ (selection-face . ac-yasnippet-selection-face)
+ (symbol . "a")))
+
+;; semantic
+
+(defun ac-semantic-candidates (prefix)
+ (with-no-warnings
+ (delete "" ; semantic sometimes returns an empty string
+ (mapcar 'semantic-tag-name
+ (ignore-errors
+ (or (semantic-analyze-possible-completions
+ (semantic-analyze-current-context))
+ (senator-find-tag-for-completion prefix)))))))
+
+(ac-define-source semantic
+ '((available . (or (require 'semantic-ia nil t)
+ (require 'semantic/ia nil t)))
+ (candidates . (ac-semantic-candidates ac-prefix))
+ (prefix . c-dot-ref)
+ (requires . 0)
+ (symbol . "m")))
+
+(ac-define-source semantic-raw
+ '((available . (or (require 'semantic-ia nil t)
+ (require 'semantic/ia nil t)))
+ (candidates . (ac-semantic-candidates ac-prefix))
+ (symbol . "s")))
+
+;; eclim
+
+(defun ac-eclim-candidates ()
+ (with-no-warnings
+ (loop for c in (eclim/java-complete)
+ collect (nth 1 c))))
+
+(ac-define-source eclim
+ '((candidates . ac-eclim-candidates)
+ (prefix . c-dot)
+ (requires . 0)
+ (symbol . "f")))
+
+;; css
+
+;; Copied from company-css.el
+(defconst ac-css-property-alist
+ ;; see http://www.w3.org/TR/CSS21/propidx.html
+ '(("azimuth" angle "left-side" "far-left" "left" "center-left" "center"
+ "center-right" "right" "far-right" "right-side" "behind" "leftwards"
+ "rightwards")
+ ("background" background-color background-image background-repeat
+ background-attachment background-position)
+ ("background-attachment" "scroll" "fixed")
+ ("background-color" color "transparent")
+ ("background-image" uri "none")
+ ("background-position" percentage length "left" "center" "right" percentage
+ length "top" "center" "bottom" "left" "center" "right" "top" "center"
+ "bottom")
+ ("background-repeat" "repeat" "repeat-x" "repeat-y" "no-repeat")
+ ("border" border-width border-style border-color)
+ ("border-bottom" border)
+ ("border-bottom-color" border-color)
+ ("border-bottom-style" border-style)
+ ("border-bottom-width" border-width)
+ ("border-collapse" "collapse" "separate")
+ ("border-color" color "transparent")
+ ("border-left" border)
+ ("border-left-color" border-color)
+ ("border-left-style" border-style)
+ ("border-left-width" border-width)
+ ("border-right" border)
+ ("border-right-color" border-color)
+ ("border-right-style" border-style)
+ ("border-right-width" border-width)
+ ("border-spacing" length length)
+ ("border-style" border-style)
+ ("border-top" border)
+ ("border-top-color" border-color)
+ ("border-top-style" border-style)
+ ("border-top-width" border-width)
+ ("border-width" border-width)
+ ("bottom" length percentage "auto")
+ ("caption-side" "top" "bottom")
+ ("clear" "none" "left" "right" "both")
+ ("clip" shape "auto")
+ ("color" color)
+ ("content" "normal" "none" string uri counter "attr()" "open-quote"
+ "close-quote" "no-open-quote" "no-close-quote")
+ ("counter-increment" identifier integer "none")
+ ("counter-reset" identifier integer "none")
+ ("cue" cue-before cue-after)
+ ("cue-after" uri "none")
+ ("cue-before" uri "none")
+ ("cursor" uri "*" "auto" "crosshair" "default" "pointer" "move" "e-resize"
+ "ne-resize" "nw-resize" "n-resize" "se-resize" "sw-resize" "s-resize"
+ "w-resize" "text" "wait" "help" "progress")
+ ("direction" "ltr" "rtl")
+ ("display" "inline" "block" "list-item" "run-in" "inline-block" "table"
+ "inline-table" "table-row-group" "table-header-group" "table-footer-group"
+ "table-row" "table-column-group" "table-column" "table-cell"
+ "table-caption" "none")
+ ("elevation" angle "below" "level" "above" "higher" "lower")
+ ("empty-cells" "show" "hide")
+ ("float" "left" "right" "none")
+ ("font" font-style font-variant font-weight font-size "/" line-height
+ font-family "caption" "icon" "menu" "message-box" "small-caption"
+ "status-bar")
+ ("font-family" family-name generic-family)
+ ("font-size" absolute-size relative-size length percentage)
+ ("font-style" "normal" "italic" "oblique")
+ ("font-variant" "normal" "small-caps")
+ ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200" "300" "400"
+ "500" "600" "700" "800" "900")
+ ("height" length percentage "auto")
+ ("left" length percentage "auto")
+ ("letter-spacing" "normal" length)
+ ("line-height" "normal" number length percentage)
+ ("list-style" list-style-type list-style-position list-style-image)
+ ("list-style-image" uri "none")
+ ("list-style-position" "inside" "outside")
+ ("list-style-type" "disc" "circle" "square" "decimal" "decimal-leading-zero"
+ "lower-roman" "upper-roman" "lower-greek" "lower-latin" "upper-latin"
+ "armenian" "georgian" "lower-alpha" "upper-alpha" "none")
+ ("margin" margin-width)
+ ("margin-bottom" margin-width)
+ ("margin-left" margin-width)
+ ("margin-right" margin-width)
+ ("margin-top" margin-width)
+ ("max-height" length percentage "none")
+ ("max-width" length percentage "none")
+ ("min-height" length percentage)
+ ("min-width" length percentage)
+ ("orphans" integer)
+ ("outline" outline-color outline-style outline-width)
+ ("outline-color" color "invert")
+ ("outline-style" border-style)
+ ("outline-width" border-width)
+ ("overflow" "visible" "hidden" "scroll" "auto")
+ ("padding" padding-width)
+ ("padding-bottom" padding-width)
+ ("padding-left" padding-width)
+ ("padding-right" padding-width)
+ ("padding-top" padding-width)
+ ("page-break-after" "auto" "always" "avoid" "left" "right")
+ ("page-break-before" "auto" "always" "avoid" "left" "right")
+ ("page-break-inside" "avoid" "auto")
+ ("pause" time percentage)
+ ("pause-after" time percentage)
+ ("pause-before" time percentage)
+ ("pitch" frequency "x-low" "low" "medium" "high" "x-high")
+ ("pitch-range" number)
+ ("play-during" uri "mix" "repeat" "auto" "none")
+ ("position" "static" "relative" "absolute" "fixed")
+ ("quotes" string string "none")
+ ("richness" number)
+ ("right" length percentage "auto")
+ ("speak" "normal" "none" "spell-out")
+ ("speak-header" "once" "always")
+ ("speak-numeral" "digits" "continuous")
+ ("speak-punctuation" "code" "none")
+ ("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast" "faster"
+ "slower")
+ ("stress" number)
+ ("table-layout" "auto" "fixed")
+ ("text-align" "left" "right" "center" "justify")
+ ("text-decoration" "none" "underline" "overline" "line-through" "blink")
+ ("text-indent" length percentage)
+ ("text-transform" "capitalize" "uppercase" "lowercase" "none")
+ ("top" length percentage "auto")
+ ("unicode-bidi" "normal" "embed" "bidi-override")
+ ("vertical-align" "baseline" "sub" "super" "top" "text-top" "middle"
+ "bottom" "text-bottom" percentage length)
+ ("visibility" "visible" "hidden" "collapse")
+ ("voice-family" specific-voice generic-voice "*" specific-voice
+ generic-voice)
+ ("volume" number percentage "silent" "x-soft" "soft" "medium" "loud"
+ "x-loud")
+ ("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line")
+ ("widows" integer)
+ ("width" length percentage "auto")
+ ("word-spacing" "normal" length)
+ ("z-index" "auto" integer))
+ "A list of CSS properties and their possible values.")
+
+(defconst ac-css-value-classes
+ '((absolute-size "xx-small" "x-small" "small" "medium" "large" "x-large"
+ "xx-large")
+ (border-style "none" "hidden" "dotted" "dashed" "solid" "double" "groove"
+ "ridge" "inset" "outset")
+ (color "aqua" "black" "blue" "fuchsia" "gray" "green" "lime" "maroon" "navy"
+ "olive" "orange" "purple" "red" "silver" "teal" "white" "yellow"
+ "rgb")
+ (counter "counter")
+ (family-name "Courier" "Helvetica" "Times")
+ (generic-family "serif" "sans-serif" "cursive" "fantasy" "monospace")
+ (generic-voice "male" "female" "child")
+ (margin-width "auto") ;; length percentage
+ (relative-size "larger" "smaller")
+ (shape "rect")
+ (uri "url"))
+ "A list of CSS property value classes and their contents.")
+
+(defconst ac-css-pseudo-classes
+ '("active" "after" "before" "first" "first-child" "first-letter" "first-line"
+ "focus" "hover" "lang" "left" "link" "right" "visited")
+ "Identifiers for CSS pseudo-elements and pseudo-classes.")
+
+(defvar ac-css-property nil
+ "Current editing property.")
+
+(defun ac-css-prefix ()
+ (when (save-excursion (re-search-backward "\\_<\\(.+?\\)\\_>\\s *:.*\\=" nil t))
+ (setq ac-css-property (match-string 1))
+ (or (ac-prefix-symbol) (point))))
+
+(defun ac-css-property-candidates ()
+ (or (loop with list = (assoc-default ac-css-property ac-css-property-alist)
+ with value
+ while (setq value (pop list))
+ if (symbolp value)
+ do (setq list
+ (append list
+ (or (assoc-default value ac-css-value-classes)
+ (assoc-default (symbol-name value) ac-css-property-alist))))
+ else collect value)
+ ac-css-pseudo-classes))
+
+(defvar ac-source-css-property
+ '((candidates . ac-css-property-candidates)
+ (prefix . ac-css-prefix)
+ (requires . 0)))
+
+
+
+;;;; Not maintained sources
+
+;; ropemacs
+
+(defvar ac-ropemacs-loaded nil)
+(defun ac-ropemacs-require ()
+ (with-no-warnings
+ (unless ac-ropemacs-loaded
+ (pymacs-load "ropemacs" "rope-")
+ (if (boundp 'ropemacs-enable-autoimport)
+ (setq ropemacs-enable-autoimport t))
+ (setq ac-ropemacs-loaded t))))
+
+(defun ac-ropemacs-setup ()
+ (ac-ropemacs-require)
+ ;(setq ac-sources (append (list 'ac-source-ropemacs) ac-sources))
+ (setq ac-omni-completion-sources '(("\\." ac-source-ropemacs))))
+
+(defun ac-ropemacs-initialize ()
+ (autoload 'pymacs-apply "pymacs")
+ (autoload 'pymacs-call "pymacs")
+ (autoload 'pymacs-eval "pymacs" nil t)
+ (autoload 'pymacs-exec "pymacs" nil t)
+ (autoload 'pymacs-load "pymacs" nil t)
+ (add-hook 'python-mode-hook 'ac-ropemacs-setup)
+ t)
+
+(defvar ac-ropemacs-completions-cache nil)
+(defvar ac-source-ropemacs
+ '((init
+ . (lambda ()
+ (setq ac-ropemacs-completions-cache
+ (mapcar
+ (lambda (completion)
+ (concat ac-prefix completion))
+ (ignore-errors
+ (rope-completions))))))
+ (candidates . ac-ropemacs-completions-cache)))
+
+;; rcodetools
+
+(defvar ac-source-rcodetools
+ '((init . (lambda ()
+ (require 'rcodetools)
+ (condition-case x
+ (save-excursion
+ (rct-exec-and-eval rct-complete-command-name "--completion-emacs-icicles"))
+ (error) (setq rct-method-completion-table nil))))
+ (candidates . (lambda ()
+ (all-completions
+ ac-prefix
+ (mapcar
+ (lambda (completion)
+ (replace-regexp-in-string "\t.*$" "" (car completion)))
+ rct-method-completion-table))))))
+
+
+
+;;;; Default settings
+
+(defun ac-common-setup ()
+ (add-to-list 'ac-sources 'ac-source-filename))
+
+(defun ac-emacs-lisp-mode-setup ()
+ (setq ac-sources (append '(ac-source-features ac-source-functions ac-source-yasnippet ac-source-variables ac-source-symbols) ac-sources)))
+
+(defun ac-cc-mode-setup ()
+ (setq ac-sources (append '(ac-source-yasnippet ac-source-gtags) ac-sources)))
+
+(defun ac-ruby-mode-setup ()
+ (make-local-variable 'ac-ignores)
+ (add-to-list 'ac-ignores "end"))
+
+(defun ac-css-mode-setup ()
+ (setq ac-sources (append '(ac-source-css-property) ac-sources)))
+
+(defun ac-config-default ()
+ (setq-default ac-sources '(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers))
+ (add-hook 'emacs-lisp-mode-hook 'ac-emacs-lisp-mode-setup)
+ (add-hook 'c-mode-common-hook 'ac-cc-mode-setup)
+ (add-hook 'ruby-mode-hook 'ac-ruby-mode-setup)
+ (add-hook 'css-mode-hook 'ac-css-mode-setup)
+ (add-hook 'auto-complete-mode-hook 'ac-common-setup)
+ (global-auto-complete-mode t))
+
+(provide 'auto-complete-config)
+;;; auto-complete-config.el ends here
diff --git a/emacs.d/auto-complete.el b/emacs.d/auto-complete.el
new file mode 100644
index 0000000..2472dc7
--- /dev/null
+++ b/emacs.d/auto-complete.el
@@ -0,0 +1,1897 @@
+;;; auto-complete.el --- Auto Completion for GNU Emacs
+
+;; Copyright (C) 2008, 2009, 2010 Tomohiro Matsuyama
+
+;; Author: Tomohiro Matsuyama <m2ym.pub@gmail.com>
+;; URL: http://cx4a.org/software/auto-complete
+;; Keywords: completion, convenience
+;; Version: 1.3
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This extension provides a way to complete with popup menu like:
+;;
+;; def-!-
+;; +-----------------+
+;; |defun::::::::::::|
+;; |defvar |
+;; |defmacro |
+;; | ... |
+;; +-----------------+
+;;
+;; You can complete by typing and selecting menu.
+;;
+;; Entire documents are located in doc/ directory.
+;; Take a look for information.
+;;
+;; Enjoy!
+
+;;; Code:
+
+
+
+(eval-when-compile
+ (require 'cl))
+
+(require 'popup)
+
+;;;; Global stuff
+
+(defun ac-error (&optional var)
+ "Report an error and disable `auto-complete-mode'."
+ (ignore-errors
+ (message "auto-complete error: %s" var)
+ (auto-complete-mode -1)
+ var))
+
+
+
+;;;; Customization
+
+(defgroup auto-complete nil
+ "Auto completion."
+ :group 'completion
+ :prefix "ac-")
+
+(defcustom ac-delay 0.1
+ "Delay to completions will be available."
+ :type 'float
+ :group 'auto-complete)
+
+(defcustom ac-auto-show-menu 0.8
+ "Non-nil means completion menu will be automatically shown."
+ :type '(choice (const :tag "Yes" t)
+ (const :tag "Never" nil)
+ (float :tag "Timer"))
+ :group 'auto-complete)
+
+(defcustom ac-show-menu-immediately-on-auto-complete t
+ "Non-nil means menu will be showed immediately on `auto-complete'."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-expand-on-auto-complete t
+ "Non-nil means expand whole common part on first time `auto-complete'."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-disable-faces '(font-lock-comment-face font-lock-string-face font-lock-doc-face)
+ "Non-nil means disable automatic completion on specified faces."
+ :type '(repeat symbol)
+ :group 'auto-complete)
+
+(defcustom ac-stop-flymake-on-completing t
+ "Non-nil means disble flymake temporarily on completing."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-use-fuzzy t
+ "Non-nil means use fuzzy matching."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-fuzzy-cursor-color "red"
+ "Cursor color in fuzzy mode."
+ :type 'string
+ :group 'auto-complete)
+
+(defcustom ac-use-comphist t
+ "Non-nil means use intelligent completion history."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-comphist-threshold 0.7
+ "Percentage of ignoring low scored candidates."
+ :type 'float
+ :group 'auto-complete)
+
+(defcustom ac-comphist-file
+ (expand-file-name (concat (if (boundp 'user-emacs-directory)
+ user-emacs-directory
+ "~/.emacs.d/")
+ "/ac-comphist.dat"))
+ "Completion history file name."
+ :type 'string
+ :group 'auto-complete)
+
+(defcustom ac-use-quick-help t
+ "Non-nil means use quick help."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-quick-help-delay 1.5
+ "Delay to show quick help."
+ :type 'float
+ :group 'auto-complete)
+
+(defcustom ac-menu-height 10
+ "Max height of candidate menu."
+ :type 'integer
+ :group 'auto-complete)
+(defvaralias 'ac-candidate-menu-height 'ac-menu-height)
+
+(defcustom ac-quick-help-height 20
+ "Max height of quick help."
+ :type 'integer
+ :group 'auto-complete)
+
+(defcustom ac-quick-help-prefer-x t
+ "Prefer X tooltip than overlay popup for displaying quick help."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-candidate-limit nil
+ "Limit number of candidates. Non-integer means no limit."
+ :type 'integer
+ :group 'auto-complete)
+(defvaralias 'ac-candidate-max 'ac-candidate-limit)
+
+(defcustom ac-modes
+ '(emacs-lisp-mode
+ lisp-interaction-mode
+ c-mode cc-mode c++-mode
+ java-mode clojure-mode scala-mode
+ scheme-mode
+ ocaml-mode tuareg-mode
+ perl-mode cperl-mode python-mode ruby-mode
+ ecmascript-mode javascript-mode js-mode js2-mode php-mode css-mode
+ makefile-mode sh-mode fortran-mode f90-mode ada-mode
+ xml-mode sgml-mode)
+ "Major modes `auto-complete-mode' can run on."
+ :type '(repeat symbol)
+ :group 'auto-complete)
+
+(defcustom ac-compatible-packages-regexp
+ "^ac-"
+ "Regexp to indicate what packages can work with auto-complete."
+ :type 'string
+ :group 'auto-complete)
+
+(defcustom ac-trigger-commands
+ '(self-insert-command)
+ "Trigger commands that specify whether `auto-complete' should start or not."
+ :type '(repeat symbol)
+ :group 'auto-complete)
+
+(defcustom ac-trigger-commands-on-completing
+ '(delete-backward-char
+ backward-delete-char
+ backward-delete-char-untabify)
+ "Trigger commands that specify whether `auto-complete' should continue or not."
+ :type '(repeat symbol)
+ :group 'auto-complete)
+
+(defcustom ac-trigger-key nil
+ "Non-nil means `auto-complete' will start by typing this key.
+If you specify this TAB, for example, `auto-complete' will start by typing TAB,
+and if there is no completions, an original command will be fallbacked."
+ :type 'string
+ :group 'auto-complete
+ :set (lambda (symbol value)
+ (set-default symbol value)
+ (when (and value
+ (fboundp 'ac-set-trigger-key))
+ (ac-set-trigger-key value))))
+
+(defcustom ac-auto-start 2
+ "Non-nil means completion will be started automatically.
+Positive integer means if a length of a word you entered is larger than the value,
+completion will be started automatically.
+If you specify `nil', never be started automatically."
+ :type '(choice (const :tag "Yes" t)
+ (const :tag "Never" nil)
+ (integer :tag "Require"))
+ :group 'auto-complete)
+
+(defcustom ac-ignores nil
+ "List of string to ignore completion."
+ :type '(repeat string)
+ :group 'auto-complete)
+
+(defcustom ac-ignore-case 'smart
+ "Non-nil means auto-complete ignores case.
+If this value is `smart', auto-complete ignores case only when
+a prefix doen't contain any upper case letters."
+ :type '(choice (const :tag "Yes" t)
+ (const :tag "Smart" smart)
+ (const :tag "No" nil))
+ :group 'auto-complete)
+
+(defcustom ac-dwim t
+ "Non-nil means `auto-complete' works based on Do What I Mean."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-use-menu-map nil
+ "Non-nil means a special keymap `ac-menu-map' on completing menu will be used."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defcustom ac-use-overriding-local-map nil
+ "Non-nil means `overriding-local-map' will be used to hack for overriding key events on auto-copletion."
+ :type 'boolean
+ :group 'auto-complete)
+
+(defface ac-completion-face
+ '((t (:foreground "darkgray" :underline t)))
+ "Face for inline completion"
+ :group 'auto-complete)
+
+(defface ac-candidate-face
+ '((t (:background "lightgray" :foreground "black")))
+ "Face for candidate."
+ :group 'auto-complete)
+
+(defface ac-selection-face
+ '((t (:background "steelblue" :foreground "white")))
+ "Face for selected candidate."
+ :group 'auto-complete)
+
+(defvar auto-complete-mode-hook nil
+ "Hook for `auto-complete-mode'.")
+
+
+
+;;;; Internal variables
+
+(defvar auto-complete-mode nil
+ "Dummy variable to suppress compiler warnings.")
+
+(defvar ac-cursor-color nil
+ "Old cursor color.")
+
+(defvar ac-inline nil
+ "Inline completion instance.")
+
+(defvar ac-menu nil
+ "Menu instance.")
+
+(defvar ac-show-menu nil
+ "Flag to show menu on timer tick.")
+
+(defvar ac-last-completion nil
+ "Cons of prefix marker and selected item of last completion.")
+
+(defvar ac-quick-help nil
+ "Quick help instance")
+
+(defvar ac-completing nil
+ "Non-nil means `auto-complete-mode' is now working on completion.")
+
+(defvar ac-buffer nil
+ "Buffer where auto-complete is started.")
+
+(defvar ac-point nil
+ "Start point of prefix.")
+
+(defvar ac-last-point nil
+ "Last point of updating pattern.")
+
+(defvar ac-prefix nil
+ "Prefix string.")
+(defvaralias 'ac-target 'ac-prefix)
+
+(defvar ac-selected-candidate nil
+ "Last selected candidate.")
+
+(defvar ac-common-part nil
+ "Common part string of meaningful candidates.
+If there is no common part, this will be nil.")
+
+(defvar ac-whole-common-part nil
+ "Common part string of whole candidates.
+If there is no common part, this will be nil.")
+
+(defvar ac-prefix-overlay nil
+ "Overlay for prefix string.")
+
+(defvar ac-timer nil
+ "Completion idle timer.")
+
+(defvar ac-show-menu-timer nil
+ "Show menu idle timer.")
+
+(defvar ac-quick-help-timer nil
+ "Quick help idle timer.")
+
+(defvar ac-triggered nil
+ "Flag to update.")
+
+(defvar ac-limit nil
+ "Limit number of candidates for each sources.")
+
+(defvar ac-candidates nil
+ "Current candidates.")
+
+(defvar ac-candidates-cache nil
+ "Candidates cache for individual sources.")
+
+(defvar ac-fuzzy-enable nil
+ "Non-nil means fuzzy matching is enabled.")
+
+(defvar ac-dwim-enable nil
+ "Non-nil means DWIM completion will be allowed.")
+
+(defvar ac-mode-map (make-sparse-keymap)
+ "Auto-complete mode map. It is also used for trigger key command. See also `ac-trigger-key'.")
+
+(defvar ac-completing-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\t" 'ac-expand)
+ (define-key map "\r" 'ac-complete)
+ (define-key map (kbd "M-TAB") 'auto-complete)
+ (define-key map "\C-s" 'ac-isearch)
+
+ (define-key map "\M-n" 'ac-next)
+ (define-key map "\M-p" 'ac-previous)
+ (define-key map [down] 'ac-next)
+ (define-key map [up] 'ac-previous)
+
+ (define-key map [f1] 'ac-help)
+ (define-key map [M-f1] 'ac-persist-help)
+ (define-key map (kbd "C-?") 'ac-help)
+ (define-key map (kbd "C-M-?") 'ac-persist-help)
+
+ (define-key map [C-down] 'ac-quick-help-scroll-down)
+ (define-key map [C-up] 'ac-quick-help-scroll-up)
+ (define-key map "\C-\M-n" 'ac-quick-help-scroll-down)
+ (define-key map "\C-\M-p" 'ac-quick-help-scroll-up)
+
+ (dotimes (i 9)
+ (let ((symbol (intern (format "ac-complete-%d" (1+ i)))))
+ (fset symbol
+ `(lambda ()
+ (interactive)
+ (when (and (ac-menu-live-p) (popup-select ac-menu ,i))
+ (ac-complete))))
+ (define-key map (read-kbd-macro (format "M-%s" (1+ i))) symbol)))
+
+ map)
+ "Keymap for completion.")
+(defvaralias 'ac-complete-mode-map 'ac-completing-map)
+
+(defvar ac-menu-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\C-n" 'ac-next)
+ (define-key map "\C-p" 'ac-previous)
+ (set-keymap-parent map ac-completing-map)
+ map)
+ "Keymap for completion on completing menu.")
+
+(defvar ac-current-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map ac-completing-map)
+ map))
+
+(defvar ac-match-function 'all-completions
+ "Default match function.")
+
+(defvar ac-prefix-definitions
+ '((symbol . ac-prefix-symbol)
+ (file . ac-prefix-file)
+ (valid-file . ac-prefix-valid-file)
+ (c-dot . ac-prefix-c-dot)
+ (c-dot-ref . ac-prefix-c-dot-ref))
+ "Prefix definitions for common use.")
+
+(defvar ac-sources '(ac-source-words-in-same-mode-buffers)
+ "Sources for completion.")
+(make-variable-buffer-local 'ac-sources)
+
+(defvar ac-compiled-sources nil
+ "Compiled source of `ac-sources'.")
+
+(defvar ac-current-sources nil
+ "Current working sources. This is sublist of `ac-compiled-sources'.")
+
+(defvar ac-omni-completion-sources nil
+ "Do not use this anymore.")
+
+(defvar ac-current-prefix-def nil)
+
+(defvar ac-ignoring-prefix-def nil)
+
+
+
+;;;; Intelligent completion history
+
+(defvar ac-comphist nil
+ "Database of completion history.")
+
+(defsubst ac-comphist-make-tab ()
+ (make-hash-table :test 'equal))
+
+(defsubst ac-comphist-tab (db)
+ (nth 0 db))
+
+(defsubst ac-comphist-cache (db)
+ (nth 1 db))
+
+(defun ac-comphist-make (&optional tab)
+ (list (or tab (ac-comphist-make-tab)) (make-hash-table :test 'equal :weakness t)))
+
+(defun ac-comphist-get (db string &optional create)
+ (let* ((tab (ac-comphist-tab db))
+ (index (gethash string tab)))
+ (when (and create (null index))
+ (setq index (make-vector (length string) 0))
+ (puthash string index tab))
+ index))
+
+(defun ac-comphist-add (db string prefix)
+ (setq prefix (min prefix (1- (length string))))
+ (when (<= 0 prefix)
+ (setq string (substring-no-properties string))
+ (let ((stat (ac-comphist-get db string t)))
+ (incf (aref stat prefix))
+ (remhash string (ac-comphist-cache db)))))
+
+(defun ac-comphist-score (db string prefix)
+ (setq prefix (min prefix (1- (length string))))
+ (if (<= 0 prefix)
+ (let ((cache (gethash string (ac-comphist-cache db))))
+ (or (and cache (aref cache prefix))
+ (let ((stat (ac-comphist-get db string))
+ (score 0.0))
+ (when stat
+ (loop for p from 0 below (length string)
+ ;; sigmoid function
+ with a = 5
+ with d = (/ 6.0 a)
+ for x = (- d (abs (- prefix p)))
+ for r = (/ 1.0 (1+ (exp (* (- a) x))))
+ do
+ (incf score (* (aref stat p) r))))
+ ;; Weight by distance
+ (incf score (max 0.0 (- 0.3 (/ (- (length string) prefix) 100.0))))
+ (unless cache
+ (setq cache (make-vector (length string) nil))
+ (puthash string cache (ac-comphist-cache db)))
+ (aset cache prefix score)
+ score)))
+ 0.0))
+
+(defun ac-comphist-sort (db collection prefix &optional threshold)
+ (let (result
+ (n 0)
+ (total 0)
+ (cur 0))
+ (setq result (mapcar (lambda (a)
+ (when (and cur threshold)
+ (if (>= cur (* total threshold))
+ (setq cur nil)
+ (incf n)
+ (incf cur (cdr a))))
+ (car a))
+ (sort (mapcar (lambda (string)
+ (let ((score (ac-comphist-score db string prefix)))
+ (incf total score)
+ (cons string score)))
+ collection)
+ (lambda (a b) (< (cdr b) (cdr a))))))
+ (if threshold
+ (cons n result)
+ result)))
+
+(defun ac-comphist-serialize (db)
+ (let (alist)
+ (maphash (lambda (k v)
+ (push (cons k v) alist))
+ (ac-comphist-tab db))
+ (list alist)))
+
+(defun ac-comphist-deserialize (sexp)
+ (condition-case nil
+ (ac-comphist-make (let ((tab (ac-comphist-make-tab)))
+ (mapc (lambda (cons)
+ (puthash (car cons) (cdr cons) tab))
+ (nth 0 sexp))
+ tab))
+ (error (message "Invalid comphist db.") nil)))
+
+(defun ac-comphist-init ()
+ (ac-comphist-load)
+ (add-hook 'kill-emacs-hook 'ac-comphist-save))
+
+(defun ac-comphist-load ()
+ (interactive)
+ (let ((db (if (file-exists-p ac-comphist-file)
+ (ignore-errors
+ (with-temp-buffer
+ (insert-file-contents ac-comphist-file)
+ (goto-char (point-min))
+ (ac-comphist-deserialize (read (current-buffer))))))))
+ (setq ac-comphist (or db (ac-comphist-make)))))
+
+(defun ac-comphist-save ()
+ (interactive)
+ (require 'pp)
+ (ignore-errors
+ (with-temp-buffer
+ (pp (ac-comphist-serialize ac-comphist) (current-buffer))
+ (write-region (point-min) (point-max) ac-comphist-file))))
+
+
+
+;;;; Auto completion internals
+
+(defun ac-menu-at-wrapper-line-p ()
+ "Return non-nil if current line is long and wrapped to next visual line."
+ (and (not truncate-lines)
+ (eq (line-beginning-position)
+ (save-excursion
+ (vertical-motion 1)
+ (line-beginning-position)))))
+
+(defun ac-prefix-symbol ()
+ "Default prefix definition function."
+ (require 'thingatpt)
+ (car-safe (bounds-of-thing-at-point 'symbol)))
+(defalias 'ac-prefix-default 'ac-prefix-symbol)
+
+(defun ac-prefix-file ()
+ "File prefix."
+ (let ((point (re-search-backward "[\"<>' \t\r\n]" nil t)))
+ (if point (1+ point))))
+
+(defun ac-prefix-valid-file ()
+ "Existed (or to be existed) file prefix."
+ (let* ((line-beg (line-beginning-position))
+ (end (point))
+ (start (or (let ((point (re-search-backward "[\"<>'= \t\r\n]" line-beg t)))
+ (if point (1+ point)))
+ line-beg))
+ (file (buffer-substring start end)))
+ (if (and file (or (string-match "^/" file)
+ (and (setq file (and (string-match "^[^/]*/" file)
+ (match-string 0 file)))
+ (file-directory-p file))))
+ start)))
+
+(defun ac-prefix-c-dot ()
+ "C-like languages dot(.) prefix."
+ (if (re-search-backward "\\.\\(\\(?:[a-zA-Z0-9][_a-zA-Z0-9]*\\)?\\)\\=" nil t)
+ (match-beginning 1)))
+
+(defun ac-prefix-c-dot-ref ()
+ "C-like languages dot(.) and reference(->) prefix."
+ (if (re-search-backward "\\(?:\\.\\|->\\)\\(\\(?:[a-zA-Z0-9][_a-zA-Z0-9]*\\)?\\)\\=" nil t)
+ (match-beginning 1)))
+
+(defun ac-define-prefix (name prefix)
+ "Define new prefix definition.
+You can not use it in source definition like (prefix . `NAME')."
+ (push (cons name prefix) ac-prefix-definitions))
+
+(defun ac-match-substring (prefix candidates)
+ (loop with regexp = (regexp-quote prefix)
+ for candidate in candidates
+ if (string-match regexp candidate)
+ collect candidate))
+
+(defsubst ac-source-entity (source)
+ (if (symbolp source)
+ (symbol-value source)
+ source))
+
+(defun ac-source-available-p (source)
+ (if (and (symbolp source)
+ (get source 'available))
+ (eq (get source 'available) t)
+ (let* ((src (ac-source-entity source))
+ (avail-pair (assq 'available src))
+ (avail-cond (cdr avail-pair))
+ (available (and (if avail-pair
+ (cond
+ ((symbolp avail-cond)
+ (funcall avail-cond))
+ ((listp avail-cond)
+ (eval avail-cond)))
+ t)
+ (loop for feature in (assoc-default 'depends src)
+ unless (require feature nil t) return nil
+ finally return t))))
+ (if (symbolp source)
+ (put source 'available (if available t 'no)))
+ available)))
+
+(defun ac-compile-sources (sources)
+ "Compiled `SOURCES' into expanded sources style."
+ (loop for source in sources
+ if (ac-source-available-p source)
+ do
+ (setq source (ac-source-entity source))
+ (flet ((add-attribute (name value &optional append) (add-to-list 'source (cons name value) append)))
+ ;; prefix
+ (let* ((prefix (assoc 'prefix source))
+ (real (assoc-default (cdr prefix) ac-prefix-definitions)))
+ (cond
+ (real
+ (add-attribute 'prefix real))
+ ((null prefix)
+ (add-attribute 'prefix 'ac-prefix-default))))
+ ;; match
+ (let ((match (assq 'match source)))
+ (cond
+ ((eq (cdr match) 'substring)
+ (setcdr match 'ac-match-substring)))))
+ and collect source))
+
+(defun ac-compiled-sources ()
+ (or ac-compiled-sources
+ (setq ac-compiled-sources
+ (ac-compile-sources ac-sources))))
+
+(defsubst ac-menu-live-p ()
+ (popup-live-p ac-menu))
+
+(defun ac-menu-create (point width height)
+ (setq ac-menu
+ (popup-create point width height
+ :around t
+ :face 'ac-candidate-face
+ :selection-face 'ac-selection-face
+ :symbol t
+ :scroll-bar t
+ :margin-left 1)))
+
+(defun ac-menu-delete ()
+ (when ac-menu
+ (popup-delete ac-menu)
+ (setq ac-menu)))
+
+(defsubst ac-inline-marker ()
+ (nth 0 ac-inline))
+
+(defsubst ac-inline-overlay ()
+ (nth 1 ac-inline))
+
+(defsubst ac-inline-live-p ()
+ (and ac-inline (ac-inline-overlay) t))
+
+(defun ac-inline-show (point string)
+ (unless ac-inline
+ (setq ac-inline (list (make-marker) nil)))
+ (save-excursion
+ (let ((overlay (ac-inline-overlay))
+ (width 0)
+ (string-width (string-width string))
+ (length 0)
+ (original-string string))
+ ;; Calculate string space to show completion
+ (goto-char point)
+ (let (c)
+ (while (and (not (eolp))
+ (< width string-width)
+ (setq c (char-after))
+ (not (eq c ?\t))) ; special case for tab
+ (incf width (char-width c))
+ (incf length)
+ (forward-char)))
+
+ ;; Show completion
+ (goto-char point)
+ (cond
+ ((= width 0)
+ (set-marker (ac-inline-marker) point)
+ (let ((buffer-undo-list t))
+ (insert " "))
+ (setq width 1
+ length 1))
+ ((<= width string-width)
+ ;; No space to show
+ ;; Do nothing
+ )
+ ((> width string-width)
+ ;; Need to fill space
+ (setq string (concat string (make-string (- width string-width) ? )))))
+ (setq string (propertize string 'face 'ac-completion-face))
+ (if overlay
+ (progn
+ (move-overlay overlay point (+ point length))
+ (overlay-put overlay 'invisible nil))
+ (setq overlay (make-overlay point (+ point length)))
+ (setf (nth 1 ac-inline) overlay)
+ (overlay-put overlay 'priority 9999)
+ ;; Help prefix-overlay in some cases
+ (overlay-put overlay 'keymap ac-current-map))
+ (overlay-put overlay 'display (substring string 0 1))
+ ;; TODO no width but char
+ (overlay-put overlay 'after-string (substring string 1))
+ (overlay-put overlay 'string original-string))))
+
+(defun ac-inline-delete ()
+ (when (ac-inline-live-p)
+ (ac-inline-hide)
+ (delete-overlay (ac-inline-overlay))
+ (setq ac-inline nil)))
+
+(defun ac-inline-hide ()
+ (when (ac-inline-live-p)
+ (let ((overlay (ac-inline-overlay))
+ (marker (ac-inline-marker))
+ (buffer-undo-list t))
+ (when overlay
+ (when (marker-position marker)
+ (save-excursion
+ (goto-char marker)
+ (delete-char 1)
+ (set-marker marker nil)))
+ (move-overlay overlay (point-min) (point-min))
+ (overlay-put overlay 'invisible t)
+ (overlay-put overlay 'display nil)
+ (overlay-put overlay 'after-string nil)))))
+
+(defun ac-inline-update ()
+ (if (and ac-completing ac-prefix (stringp ac-common-part))
+ (let ((common-part-length (length ac-common-part))
+ (prefix-length (length ac-prefix)))
+ (if (> common-part-length prefix-length)
+ (progn
+ (ac-inline-hide)
+ (ac-inline-show (point) (substring ac-common-part prefix-length)))
+ (ac-inline-delete)))
+ (ac-inline-delete)))
+
+(defun ac-put-prefix-overlay ()
+ (unless ac-prefix-overlay
+ (let (newline)
+ ;; Insert newline to make sure that cursor always on the overlay
+ (when (and (eq ac-point (point-max))
+ (eq ac-point (point)))
+ (popup-save-buffer-state
+ (insert "\n"))
+ (setq newline t))
+ (setq ac-prefix-overlay (make-overlay ac-point (1+ (point)) nil t t))
+ (overlay-put ac-prefix-overlay 'priority 9999)
+ (overlay-put ac-prefix-overlay 'keymap (make-sparse-keymap))
+ (overlay-put ac-prefix-overlay 'newline newline))))
+
+(defun ac-remove-prefix-overlay ()
+ (when ac-prefix-overlay
+ (when (overlay-get ac-prefix-overlay 'newline)
+ ;; Remove inserted newline
+ (popup-save-buffer-state
+ (goto-char (point-max))
+ (if (eq (char-before) ?\n)
+ (delete-char -1))))
+ (delete-overlay ac-prefix-overlay)))
+
+(defun ac-activate-completing-map ()
+ (if (and ac-show-menu ac-use-menu-map)
+ (set-keymap-parent ac-current-map ac-menu-map))
+ (when (and ac-use-overriding-local-map
+ (null overriding-terminal-local-map))
+ (setq overriding-terminal-local-map ac-current-map))
+ (when ac-prefix-overlay
+ (set-keymap-parent (overlay-get ac-prefix-overlay 'keymap) ac-current-map)))
+
+(defun ac-deactivate-completing-map ()
+ (set-keymap-parent ac-current-map ac-completing-map)
+ (when (and ac-use-overriding-local-map
+ (eq overriding-terminal-local-map ac-current-map))
+ (setq overriding-terminal-local-map nil))
+ (when ac-prefix-overlay
+ (set-keymap-parent (overlay-get ac-prefix-overlay 'keymap) nil)))
+
+(defsubst ac-selected-candidate ()
+ (if ac-menu
+ (popup-selected-item ac-menu)))
+
+(defun ac-prefix (requires ignore-list)
+ (loop with current = (point)
+ with point
+ with prefix-def
+ with sources
+ for source in (ac-compiled-sources)
+ for prefix = (assoc-default 'prefix source)
+ for req = (or (assoc-default 'requires source) requires 1)
+
+ if (null prefix-def)
+ do
+ (unless (member prefix ignore-list)
+ (save-excursion
+ (setq point (cond
+ ((symbolp prefix)
+ (funcall prefix))
+ ((stringp prefix)
+ (and (re-search-backward (concat prefix "\\=") nil t)
+ (or (match-beginning 1) (match-beginning 0))))
+ ((stringp (car-safe prefix))
+ (let ((regexp (nth 0 prefix))
+ (end (nth 1 prefix))
+ (group (nth 2 prefix)))
+ (and (re-search-backward (concat regexp "\\=") nil t)
+ (funcall (if end 'match-end 'match-beginning)
+ (or group 0)))))
+ (t
+ (eval prefix))))
+ (if (and point
+ (integerp req)
+ (< (- current point) req))
+ (setq point nil))
+ (if point
+ (setq prefix-def prefix))))
+
+ if (equal prefix prefix-def) do (push source sources)
+
+ finally return
+ (and point (list prefix-def point (nreverse sources)))))
+
+(defun ac-init ()
+ "Initialize current sources to start completion."
+ (setq ac-candidates-cache nil)
+ (loop for source in ac-current-sources
+ for function = (assoc-default 'init source)
+ if function do
+ (save-excursion
+ (cond
+ ((functionp function)
+ (funcall function))
+ (t
+ (eval function))))))
+
+(defun ac-candidates-1 (source)
+ (let* ((do-cache (assq 'cache source))
+ (function (assoc-default 'candidates source))
+ (action (assoc-default 'action source))
+ (document (assoc-default 'document source))
+ (symbol (assoc-default 'symbol source))
+ (ac-limit (or (assoc-default 'limit source) ac-limit))
+ (face (or (assoc-default 'face source) (assoc-default 'candidate-face source)))
+ (selection-face (assoc-default 'selection-face source))
+ (cache (and do-cache (assq source ac-candidates-cache)))
+ (candidates (cdr cache)))
+ (unless cache
+ (setq candidates (save-excursion
+ (cond
+ ((functionp function)
+ (funcall function))
+ (t
+ (eval function)))))
+ ;; Convert (name value) format candidates into name with text properties.
+ (setq candidates (mapcar (lambda (candidate)
+ (if (consp candidate)
+ (propertize (car candidate) 'value (cdr candidate))
+ candidate))
+ candidates))
+ (when do-cache
+ (push (cons source candidates) ac-candidates-cache)))
+ (setq candidates (funcall (or (assoc-default 'match source)
+ ac-match-function)
+ ac-prefix candidates))
+ ;; Remove extra items regarding to ac-limit
+ (if (and (integerp ac-limit) (> ac-limit 1) (> (length candidates) ac-limit))
+ (setcdr (nthcdr (1- ac-limit) candidates) nil))
+ ;; Put candidate properties
+ (setq candidates (mapcar (lambda (candidate)
+ (popup-item-propertize candidate
+ 'action action
+ 'symbol symbol
+ 'document document
+ 'popup-face face
+ 'selection-face selection-face))
+ candidates))
+ candidates))
+
+(defun ac-candidates ()
+ "Produce candidates for current sources."
+ (loop with completion-ignore-case = (or (eq ac-ignore-case t)
+ (and (eq ac-ignore-case 'smart)
+ (let ((case-fold-search nil)) (not (string-match "[[:upper:]]" ac-prefix)))))
+ with case-fold-search = completion-ignore-case
+ with prefix-len = (length ac-prefix)
+ for source in ac-current-sources
+ append (ac-candidates-1 source) into candidates
+ finally return
+ (progn
+ (delete-dups candidates)
+ (if (and ac-use-comphist ac-comphist)
+ (if ac-show-menu
+ (let* ((pair (ac-comphist-sort ac-comphist candidates prefix-len ac-comphist-threshold))
+ (n (car pair))
+ (result (cdr pair))
+ (cons (if (> n 0) (nthcdr (1- n) result)))
+ (cdr (cdr cons)))
+ (if cons (setcdr cons nil))
+ (setq ac-common-part (try-completion ac-prefix result))
+ (setq ac-whole-common-part (try-completion ac-prefix candidates))
+ (if cons (setcdr cons cdr))
+ result)
+ (setq candidates (ac-comphist-sort ac-comphist candidates prefix-len))
+ (setq ac-common-part (if candidates (popup-x-to-string (car candidates))))
+ (setq ac-whole-common-part (try-completion ac-prefix candidates))
+ candidates)
+ (setq ac-common-part (try-completion ac-prefix candidates))
+ (setq ac-whole-common-part ac-common-part)
+ candidates))))
+
+(defun ac-update-candidates (cursor scroll-top)
+ "Update candidates of menu to `ac-candidates' and redraw it."
+ (setf (popup-cursor ac-menu) cursor
+ (popup-scroll-top ac-menu) scroll-top)
+ (setq ac-dwim-enable (= (length ac-candidates) 1))
+ (if ac-candidates
+ (progn
+ (setq ac-completing t)
+ (ac-activate-completing-map))
+ (setq ac-completing nil)
+ (ac-deactivate-completing-map))
+ (ac-inline-update)
+ (popup-set-list ac-menu ac-candidates)
+ (if (and (not ac-fuzzy-enable)
+ (<= (length ac-candidates) 1))
+ (popup-hide ac-menu)
+ (if ac-show-menu
+ (popup-draw ac-menu))))
+
+(defun ac-reposition ()
+ "Force to redraw candidate menu with current `ac-candidates'."
+ (let ((cursor (popup-cursor ac-menu))
+ (scroll-top (popup-scroll-top ac-menu)))
+ (ac-menu-delete)
+ (ac-menu-create ac-point (popup-preferred-width ac-candidates) (popup-height ac-menu))
+ (ac-update-candidates cursor scroll-top)))
+
+(defun ac-cleanup ()
+ "Cleanup auto completion."
+ (if ac-cursor-color
+ (set-cursor-color ac-cursor-color))
+ (when (and ac-use-comphist ac-comphist)
+ (when (and (null ac-selected-candidate)
+ (member ac-prefix ac-candidates))
+ ;; Assume candidate is selected by just typing
+ (setq ac-selected-candidate ac-prefix)
+ (setq ac-last-point ac-point))
+ (when ac-selected-candidate
+ (ac-comphist-add ac-comphist
+ ac-selected-candidate
+ (if ac-last-point
+ (- ac-last-point ac-point)
+ (length ac-prefix)))))
+ (ac-deactivate-completing-map)
+ (ac-remove-prefix-overlay)
+ (ac-remove-quick-help)
+ (ac-inline-delete)
+ (ac-menu-delete)
+ (ac-cancel-timer)
+ (ac-cancel-show-menu-timer)
+ (ac-cancel-quick-help-timer)
+ (setq ac-cursor-color nil
+ ac-inline nil
+ ac-show-menu nil
+ ac-menu nil
+ ac-completing nil
+ ac-point nil
+ ac-last-point nil
+ ac-prefix nil
+ ac-prefix-overlay nil
+ ac-selected-candidate nil
+ ac-common-part nil
+ ac-whole-common-part nil
+ ac-triggered nil
+ ac-limit nil
+ ac-candidates nil
+ ac-candidates-cache nil
+ ac-fuzzy-enable nil
+ ac-dwim-enable nil
+ ac-compiled-sources nil
+ ac-current-sources nil
+ ac-current-prefix-def nil
+ ac-ignoring-prefix-def nil))
+
+(defsubst ac-abort ()
+ "Abort completion."
+ (ac-cleanup))
+
+(defun ac-expand-string (string &optional remove-undo-boundary)
+ "Expand `STRING' into the buffer and update `ac-prefix' to `STRING'.
+This function records deletion and insertion sequences by `undo-boundary'.
+If `remove-undo-boundary' is non-nil, this function also removes `undo-boundary'
+that have been made before in this function."
+ (when (not (equal string (buffer-substring ac-point (point))))
+ (undo-boundary)
+ ;; We can't use primitive-undo since it undoes by
+ ;; groups, divided by boundaries.
+ ;; We don't want boundary between deletion and insertion.
+ ;; So do it manually.
+ ;; Delete region silently for undo:
+ (if remove-undo-boundary
+ (progn
+ (let (buffer-undo-list)
+ (save-excursion
+ (delete-region ac-point (point))))
+ (setq buffer-undo-list
+ (nthcdr 2 buffer-undo-list)))
+ (delete-region ac-point (point)))
+ (insert string)
+ ;; Sometimes, possible when omni-completion used, (insert) added
+ ;; to buffer-undo-list strange record about position changes.
+ ;; Delete it here:
+ (when (and remove-undo-boundary
+ (integerp (cadr buffer-undo-list)))
+ (setcdr buffer-undo-list (nthcdr 2 buffer-undo-list)))
+ (undo-boundary)
+ (setq ac-selected-candidate string)
+ (setq ac-prefix string)))
+
+(defun ac-set-trigger-key (key)
+ "Set `ac-trigger-key' to `KEY'. It is recommemded to use this function instead of calling `setq'."
+ ;; Remove old mapping
+ (when ac-trigger-key
+ (define-key ac-mode-map (read-kbd-macro ac-trigger-key) nil))
+
+ ;; Make new mapping
+ (setq ac-trigger-key key)
+ (when key
+ (define-key ac-mode-map (read-kbd-macro key) 'ac-trigger-key-command)))
+
+(defun ac-set-timer ()
+ (unless ac-timer
+ (setq ac-timer (run-with-idle-timer ac-delay ac-delay 'ac-update-greedy))))
+
+(defun ac-cancel-timer ()
+ (when (timerp ac-timer)
+ (cancel-timer ac-timer)
+ (setq ac-timer nil)))
+
+(defun ac-update (&optional force)
+ (when (and auto-complete-mode
+ ac-prefix
+ (or ac-triggered
+ force)
+ (not isearch-mode))
+ (ac-put-prefix-overlay)
+ (setq ac-candidates (ac-candidates))
+ (let ((preferred-width (popup-preferred-width ac-candidates)))
+ ;; Reposition if needed
+ (when (or (null ac-menu)
+ (>= (popup-width ac-menu) preferred-width)
+ (<= (popup-width ac-menu) (- preferred-width 10))
+ (and (> (popup-direction ac-menu) 0)
+ (ac-menu-at-wrapper-line-p)))
+ (ac-inline-hide) ; Hide overlay to calculate correct column
+ (ac-menu-delete)
+ (ac-menu-create ac-point preferred-width ac-menu-height)))
+ (ac-update-candidates 0 0)
+ t))
+
+(defun ac-update-greedy (&optional force)
+ (let (result)
+ (while (when (and (setq result (ac-update force))
+ (null ac-candidates))
+ (add-to-list 'ac-ignoring-prefix-def ac-current-prefix-def)
+ (ac-start :force-init t)
+ ac-current-prefix-def))
+ result))
+
+(defun ac-set-show-menu-timer ()
+ (when (and (or (integerp ac-auto-show-menu) (floatp ac-auto-show-menu))
+ (null ac-show-menu-timer))
+ (setq ac-show-menu-timer (run-with-idle-timer ac-auto-show-menu ac-auto-show-menu 'ac-show-menu))))
+
+(defun ac-cancel-show-menu-timer ()
+ (when (timerp ac-show-menu-timer)
+ (cancel-timer ac-show-menu-timer)
+ (setq ac-show-menu-timer nil)))
+
+(defun ac-show-menu ()
+ (when (not (eq ac-show-menu t))
+ (setq ac-show-menu t)
+ (ac-inline-hide)
+ (ac-remove-quick-help)
+ (ac-update t)))
+
+(defun ac-help (&optional persist)
+ (interactive "P")
+ (when ac-menu
+ (popup-menu-show-help ac-menu persist)))
+
+(defun ac-persist-help ()
+ (interactive)
+ (ac-help t))
+
+(defun ac-last-help (&optional persist)
+ (interactive "P")
+ (when ac-last-completion
+ (popup-item-show-help (cdr ac-last-completion) persist)))
+
+(defun ac-last-persist-help ()
+ (interactive)
+ (ac-last-help t))
+
+(defun ac-set-quick-help-timer ()
+ (when (and ac-use-quick-help
+ (null ac-quick-help-timer))
+ (setq ac-quick-help-timer (run-with-idle-timer ac-quick-help-delay ac-quick-help-delay 'ac-quick-help))))
+
+(defun ac-cancel-quick-help-timer ()
+ (when (timerp ac-quick-help-timer)
+ (cancel-timer ac-quick-help-timer)
+ (setq ac-quick-help-timer nil)))
+
+(defun ac-pos-tip-show-quick-help (menu &optional item &rest args)
+ (let* ((point (plist-get args :point))
+ (around nil)
+ (parent-offset (popup-offset menu))
+ (doc (popup-menu-documentation menu item)))
+ (when (stringp doc)
+ (if (popup-hidden-p menu)
+ (setq around t)
+ (setq point nil))
+ (with-no-warnings
+ (pos-tip-show doc
+ 'popup-tip-face
+ (or point
+ (and menu
+ (popup-child-point menu parent-offset))
+ (point))
+ nil 0
+ popup-tip-max-width
+ nil nil
+ (and (not around) 0))
+ (unless (plist-get args :nowait)
+ (clear-this-command-keys)
+ (unwind-protect
+ (push (read-event (plist-get args :prompt)) unread-command-events)
+ (pos-tip-hide))
+ t)))))
+
+(defun ac-quick-help (&optional force)
+ (interactive)
+ (when (and (or force (null this-command))
+ (ac-menu-live-p)
+ (null ac-quick-help))
+ (setq ac-quick-help
+ (funcall (if (and ac-quick-help-prefer-x
+ (eq window-system 'x)
+ (featurep 'pos-tip))
+ 'ac-pos-tip-show-quick-help
+ 'popup-menu-show-quick-help)
+ ac-menu nil
+ :point ac-point
+ :height ac-quick-help-height
+ :nowait t))))
+
+(defun ac-remove-quick-help ()
+ (when ac-quick-help
+ (popup-delete ac-quick-help)
+ (setq ac-quick-help nil)))
+
+(defun ac-last-quick-help ()
+ (interactive)
+ (when (and ac-last-completion
+ (eq (marker-buffer (car ac-last-completion))
+ (current-buffer)))
+ (let ((doc (popup-item-documentation (cdr ac-last-completion)))
+ (point (marker-position (car ac-last-completion))))
+ (when (stringp doc)
+ (if (and ac-quick-help-prefer-x
+ (eq window-system 'x)
+ (featurep 'pos-tip))
+ (with-no-warnings (pos-tip-show doc nil point nil 0))
+ (popup-tip doc
+ :point point
+ :around t
+ :scroll-bar t
+ :margin t))))))
+
+(defmacro ac-define-quick-help-command (name arglist &rest body)
+ (declare (indent 2))
+ `(progn
+ (defun ,name ,arglist ,@body)
+ (put ',name 'ac-quick-help-command t)))
+
+(ac-define-quick-help-command ac-quick-help-scroll-down ()
+ (interactive)
+ (when ac-quick-help
+ (popup-scroll-down ac-quick-help)))
+
+(ac-define-quick-help-command ac-quick-help-scroll-up ()
+ (interactive)
+ (when ac-quick-help
+ (popup-scroll-up ac-quick-help)))
+
+
+
+;;;; Auto completion isearch
+
+(defun ac-isearch-callback (list)
+ (setq ac-dwim-enable (eq (length list) 1)))
+
+(defun ac-isearch ()
+ (interactive)
+ (when (ac-menu-live-p)
+ (ac-cancel-show-menu-timer)
+ (ac-cancel-quick-help-timer)
+ (ac-show-menu)
+ (popup-isearch ac-menu :callback 'ac-isearch-callback)))
+
+
+
+;;;; Auto completion commands
+
+(defun auto-complete (&optional sources)
+ "Start auto-completion at current point."
+ (interactive)
+ (let ((menu-live (ac-menu-live-p))
+ (inline-live (ac-inline-live-p)))
+ (ac-abort)
+ (let ((ac-sources (or sources ac-sources)))
+ (if (or ac-show-menu-immediately-on-auto-complete
+ inline-live)
+ (setq ac-show-menu t))
+ (ac-start))
+ (when (ac-update-greedy t)
+ ;; TODO Not to cause inline completion to be disrupted.
+ (if (ac-inline-live-p)
+ (ac-inline-hide))
+ ;; Not to expand when it is first time to complete
+ (when (and (or (and (not ac-expand-on-auto-complete)
+ (> (length ac-candidates) 1)
+ (not menu-live))
+ (not (let ((ac-common-part ac-whole-common-part))
+ (ac-expand-common))))
+ ac-use-fuzzy
+ (null ac-candidates))
+ (ac-fuzzy-complete)))))
+
+(defun ac-fuzzy-complete ()
+ "Start fuzzy completion at current point."
+ (interactive)
+ (when (require 'fuzzy nil)
+ (unless (ac-menu-live-p)
+ (ac-start))
+ (let ((ac-match-function 'fuzzy-all-completions))
+ (unless ac-cursor-color
+ (setq ac-cursor-color (frame-parameter (selected-frame) 'cursor-color)))
+ (if ac-fuzzy-cursor-color
+ (set-cursor-color ac-fuzzy-cursor-color))
+ (setq ac-show-menu t)
+ (setq ac-fuzzy-enable t)
+ (setq ac-triggered nil)
+ (ac-update t)))
+ t)
+
+(defun ac-next ()
+ "Select next candidate."
+ (interactive)
+ (when (ac-menu-live-p)
+ (popup-next ac-menu)
+ (setq ac-show-menu t)
+ (if (eq this-command 'ac-next)
+ (setq ac-dwim-enable t))))
+
+(defun ac-previous ()
+ "Select previous candidate."
+ (interactive)
+ (when (ac-menu-live-p)
+ (popup-previous ac-menu)
+ (setq ac-show-menu t)
+ (if (eq this-command 'ac-previous)
+ (setq ac-dwim-enable t))))
+
+(defun ac-expand ()
+ "Try expand, and if expanded twice, select next candidate."
+ (interactive)
+ (unless (ac-expand-common)
+ (let ((string (ac-selected-candidate)))
+ (when string
+ (when (equal ac-prefix string)
+ (ac-next)
+ (setq string (ac-selected-candidate)))
+ (ac-expand-string string (eq last-command this-command))
+ ;; Do reposition if menu at long line
+ (if (and (> (popup-direction ac-menu) 0)
+ (ac-menu-at-wrapper-line-p))
+ (ac-reposition))
+ (setq ac-show-menu t)
+ string))))
+
+(defun ac-expand-common ()
+ "Try to expand meaningful common part."
+ (interactive)
+ (if (and ac-dwim ac-dwim-enable)
+ (ac-complete)
+ (when (and (ac-inline-live-p)
+ ac-common-part)
+ (ac-inline-hide)
+ (ac-expand-string ac-common-part (eq last-command this-command))
+ (setq ac-common-part nil)
+ t)))
+
+(defun ac-complete ()
+ "Try complete."
+ (interactive)
+ (let* ((candidate (ac-selected-candidate))
+ (action (popup-item-property candidate 'action))
+ (fallback nil))
+ (when candidate
+ (unless (ac-expand-string candidate)
+ (setq fallback t))
+ ;; Remember to show help later
+ (when (and ac-point candidate)
+ (unless ac-last-completion
+ (setq ac-last-completion (cons (make-marker) nil)))
+ (set-marker (car ac-last-completion) ac-point ac-buffer)
+ (setcdr ac-last-completion candidate)))
+ (ac-abort)
+ (cond
+ (action
+ (funcall action))
+ (fallback
+ (ac-fallback-command)))
+ candidate))
+
+(defun* ac-start (&key
+ requires
+ force-init)
+ "Start completion."
+ (interactive)
+ (if (not auto-complete-mode)
+ (message "auto-complete-mode is not enabled")
+ (let* ((info (ac-prefix requires ac-ignoring-prefix-def))
+ (prefix-def (nth 0 info))
+ (point (nth 1 info))
+ (sources (nth 2 info))
+ prefix
+ (init (or force-init (not (eq ac-point point)))))
+ (if (or (null point)
+ (member (setq prefix (buffer-substring-no-properties point (point)))
+ ac-ignores))
+ (prog1 nil
+ (ac-abort))
+ (unless ac-cursor-color
+ (setq ac-cursor-color (frame-parameter (selected-frame) 'cursor-color)))
+ (setq ac-show-menu (or ac-show-menu (if (eq ac-auto-show-menu t) t))
+ ac-current-sources sources
+ ac-buffer (current-buffer)
+ ac-point point
+ ac-prefix prefix
+ ac-limit ac-candidate-limit
+ ac-triggered t
+ ac-current-prefix-def prefix-def)
+ (when (or init (null ac-prefix-overlay))
+ (ac-init))
+ (ac-set-timer)
+ (ac-set-show-menu-timer)
+ (ac-set-quick-help-timer)
+ (ac-put-prefix-overlay)))))
+
+(defun ac-stop ()
+ "Stop completiong."
+ (interactive)
+ (setq ac-selected-candidate nil)
+ (ac-abort))
+
+(defun ac-trigger-key-command (&optional force)
+ (interactive "P")
+ (if (or force (ac-trigger-command-p last-command))
+ (auto-complete)
+ (ac-fallback-command 'ac-trigger-key-command)))
+
+
+
+;;;; Basic cache facility
+
+(defvar ac-clear-variables-every-minute-timer nil)
+(defvar ac-clear-variables-after-save nil)
+(defvar ac-clear-variables-every-minute nil)
+(defvar ac-minutes-counter 0)
+
+(defun ac-clear-variable-after-save (variable &optional pred)
+ (add-to-list 'ac-clear-variables-after-save (cons variable pred)))
+
+(defun ac-clear-variables-after-save ()
+ (dolist (pair ac-clear-variables-after-save)
+ (if (or (null (cdr pair))
+ (funcall (cdr pair)))
+ (set (car pair) nil))))
+
+(defun ac-clear-variable-every-minutes (variable minutes)
+ (add-to-list 'ac-clear-variables-every-minute (cons variable minutes)))
+
+(defun ac-clear-variable-every-minute (variable)
+ (ac-clear-variable-every-minutes variable 1))
+
+(defun ac-clear-variable-every-10-minutes (variable)
+ (ac-clear-variable-every-minutes variable 10))
+
+(defun ac-clear-variables-every-minute ()
+ (incf ac-minutes-counter)
+ (dolist (pair ac-clear-variables-every-minute)
+ (if (eq (% ac-minutes-counter (cdr pair)) 0)
+ (set (car pair) nil))))
+
+
+
+;;;; Auto complete mode
+
+(defun ac-cursor-on-diable-face-p (&optional point)
+ (memq (get-text-property (or point (point)) 'face) ac-disable-faces))
+
+(defun ac-trigger-command-p (command)
+ "Return non-nil if `COMMAND' is a trigger command."
+ (and (symbolp command)
+ (or (memq command ac-trigger-commands)
+ (string-match "self-insert-command" (symbol-name command))
+ (string-match "electric" (symbol-name command)))))
+
+(defun ac-fallback-command (&optional except-command)
+ (let* ((auto-complete-mode nil)
+ (keys (this-command-keys-vector))
+ (command (if keys (key-binding keys))))
+ (when (and (commandp command)
+ (not (eq command except-command)))
+ (setq this-command command)
+ (call-interactively command))))
+
+(defun ac-compatible-package-command-p (command)
+ "Return non-nil if `COMMAND' is compatible with auto-complete."
+ (and (symbolp command)
+ (string-match ac-compatible-packages-regexp (symbol-name command))))
+
+(defun ac-handle-pre-command ()
+ (condition-case var
+ (if (or (setq ac-triggered (and (not ac-fuzzy-enable) ; ignore key storkes in fuzzy mode
+ (or (eq this-command 'auto-complete) ; special case
+ (ac-trigger-command-p this-command)
+ (and ac-completing
+ (memq this-command ac-trigger-commands-on-completing)))
+ (not (ac-cursor-on-diable-face-p))))
+ (ac-compatible-package-command-p this-command))
+ (progn
+ (if (or (not (symbolp this-command))
+ (not (get this-command 'ac-quick-help-command)))
+ (ac-remove-quick-help))
+ ;; Not to cause inline completion to be disrupted.
+ (ac-inline-hide))
+ (ac-abort))
+ (error (ac-error var))))
+
+(defun ac-handle-post-command ()
+ (condition-case var
+ (when (and ac-triggered
+ (or ac-auto-start
+ ac-completing)
+ (not isearch-mode))
+ (setq ac-last-point (point))
+ (ac-start :requires (unless ac-completing ac-auto-start))
+ (ac-inline-update))
+ (error (ac-error var))))
+
+(defun ac-setup ()
+ (if ac-trigger-key
+ (ac-set-trigger-key ac-trigger-key))
+ (if ac-use-comphist
+ (ac-comphist-init))
+ (unless ac-clear-variables-every-minute-timer
+ (setq ac-clear-variables-every-minute-timer (run-with-timer 60 60 'ac-clear-variables-every-minute)))
+ (if ac-stop-flymake-on-completing
+ (defadvice flymake-on-timer-event (around ac-flymake-stop-advice activate)
+ (unless ac-completing
+ ad-do-it))
+ (ad-disable-advice 'flymake-on-timer-event 'around 'ac-flymake-stop-advice)))
+
+(define-minor-mode auto-complete-mode
+ "AutoComplete mode"
+ :lighter " AC"
+ :keymap ac-mode-map
+ :group 'auto-complete
+ (if auto-complete-mode
+ (progn
+ (ac-setup)
+ (add-hook 'pre-command-hook 'ac-handle-pre-command nil t)
+ (add-hook 'post-command-hook 'ac-handle-post-command nil t)
+ (add-hook 'after-save-hook 'ac-clear-variables-after-save nil t)
+ (run-hooks 'auto-complete-mode-hook))
+ (remove-hook 'pre-command-hook 'ac-handle-pre-command t)
+ (remove-hook 'post-command-hook 'ac-handle-post-command t)
+ (remove-hook 'after-save-hook 'ac-clear-variables-after-save t)
+ (ac-abort)))
+
+(defun auto-complete-mode-maybe ()
+ "What buffer `auto-complete-mode' prefers."
+ (if (and (not (minibufferp (current-buffer)))
+ (memq major-mode ac-modes))
+ (auto-complete-mode 1)))
+
+(define-global-minor-mode global-auto-complete-mode
+ auto-complete-mode auto-complete-mode-maybe
+ :group 'auto-complete)
+
+
+
+;;;; Compatibilities with other extensions
+
+(defun ac-flyspell-workaround ()
+ "Flyspell uses `sit-for' for delaying its process. Unfortunatelly,
+it stops auto completion which is trigger with `run-with-idle-timer'.
+This workaround avoid flyspell processes when auto completion is being started."
+ (interactive)
+ (defadvice flyspell-post-command-hook (around ac-flyspell-workaround activate)
+ (unless ac-triggered
+ ad-do-it)))
+
+
+
+;;;; Standard sources
+
+(defmacro ac-define-source (name source)
+ "Source definition macro. It defines a complete command also."
+ (declare (indent 1))
+ `(progn
+ (defvar ,(intern (format "ac-source-%s" name))
+ ,source)
+ (defun ,(intern (format "ac-complete-%s" name)) ()
+ (interactive)
+ (auto-complete '(,(intern (format "ac-source-%s" name)))))))
+
+;; Words in buffer source
+(defvar ac-word-index nil)
+
+(defun ac-candidate-words-in-buffer (point prefix limit)
+ (let ((i 0)
+ candidate
+ candidates
+ (regexp (concat "\\_<" (regexp-quote prefix) "\\(\\sw\\|\\s_\\)+\\_>")))
+ (save-excursion
+ ;; Search backward
+ (goto-char point)
+ (while (and (or (not (integerp limit)) (< i limit))
+ (re-search-backward regexp nil t))
+ (setq candidate (match-string-no-properties 0))
+ (unless (member candidate candidates)
+ (push candidate candidates)
+ (incf i)))
+ ;; Search backward
+ (goto-char (+ point (length prefix)))
+ (while (and (or (not (integerp limit)) (< i limit))
+ (re-search-forward regexp nil t))
+ (setq candidate (match-string-no-properties 0))
+ (unless (member candidate candidates)
+ (push candidate candidates)
+ (incf i)))
+ (nreverse candidates))))
+
+(defun ac-incremental-update-word-index ()
+ (unless (local-variable-p 'ac-word-index)
+ (make-local-variable 'ac-word-index))
+ (if (null ac-word-index)
+ (setq ac-word-index (cons nil nil)))
+ ;; Mark incomplete
+ (if (car ac-word-index)
+ (setcar ac-word-index nil))
+ (let ((index (cdr ac-word-index))
+ (words (ac-candidate-words-in-buffer ac-point ac-prefix (or (and (integerp ac-limit) ac-limit) 10))))
+ (dolist (word words)
+ (unless (member word index)
+ (push word index)
+ (setcdr ac-word-index index)))))
+
+(defun ac-update-word-index-1 ()
+ (unless (local-variable-p 'ac-word-index)
+ (make-local-variable 'ac-word-index))
+ (when (and (not (car ac-word-index))
+ (< (buffer-size) 1048576))
+ ;; Complete index
+ (setq ac-word-index
+ (cons t
+ (split-string (buffer-substring-no-properties (point-min) (point-max))
+ "\\(?:^\\|\\_>\\).*?\\(?:\\_<\\|$\\)")))))
+
+(defun ac-update-word-index ()
+ (dolist (buffer (buffer-list))
+ (when (or ac-fuzzy-enable
+ (not (eq buffer (current-buffer))))
+ (with-current-buffer buffer
+ (ac-update-word-index-1)))))
+
+(defun ac-word-candidates (&optional buffer-pred)
+ (loop initially (unless ac-fuzzy-enable (ac-incremental-update-word-index))
+ for buffer in (buffer-list)
+ if (and (or (not (integerp ac-limit)) (< (length candidates) ac-limit))
+ (if buffer-pred (funcall buffer-pred buffer) t))
+ append (funcall ac-match-function
+ ac-prefix
+ (and (local-variable-p 'ac-word-index buffer)
+ (cdr (buffer-local-value 'ac-word-index buffer))))
+ into candidates
+ finally return candidates))
+
+(ac-define-source words-in-buffer
+ '((candidates . ac-word-candidates)))
+
+(ac-define-source words-in-all-buffer
+ '((init . ac-update-word-index)
+ (candidates . ac-word-candidates)))
+
+(ac-define-source words-in-same-mode-buffers
+ '((init . ac-update-word-index)
+ (candidates . (ac-word-candidates
+ (lambda (buffer)
+ (derived-mode-p (buffer-local-value 'major-mode buffer)))))))
+
+;; Lisp symbols source
+(defvar ac-symbols-cache nil)
+(ac-clear-variable-every-10-minutes 'ac-symbols-cache)
+
+(defun ac-symbol-file (symbol type)
+ (if (fboundp 'find-lisp-object-file-name)
+ (find-lisp-object-file-name symbol type)
+ (let ((file-name (with-no-warnings
+ (describe-simplify-lib-file-name
+ (symbol-file symbol type)))))
+ (when (equal file-name "loaddefs.el")
+ ;; Find the real def site of the preloaded object.
+ (let ((location (condition-case nil
+ (if (eq type 'defun)
+ (find-function-search-for-symbol symbol nil
+ "loaddefs.el")
+ (find-variable-noselect symbol file-name))
+ (error nil))))
+ (when location
+ (with-current-buffer (car location)
+ (when (cdr location)
+ (goto-char (cdr location)))
+ (when (re-search-backward
+ "^;;; Generated autoloads from \\(.*\\)" nil t)
+ (setq file-name (match-string 1)))))))
+ (if (and (null file-name)
+ (or (eq type 'defun)
+ (integerp (get symbol 'variable-documentation))))
+ ;; It's a object not defined in Elisp but in C.
+ (if (get-buffer " *DOC*")
+ (if (eq type 'defun)
+ (help-C-file-name (symbol-function symbol) 'subr)
+ (help-C-file-name symbol 'var))
+ 'C-source)
+ file-name))))
+
+(defun ac-symbol-documentation (symbol)
+ (if (stringp symbol)
+ (setq symbol (intern-soft symbol)))
+ (ignore-errors
+ (with-temp-buffer
+ (let ((standard-output (current-buffer)))
+ (prin1 symbol)
+ (princ " is ")
+ (cond
+ ((fboundp symbol)
+ (let ((help-xref-following t))
+ (describe-function-1 symbol))
+ (buffer-string))
+ ((boundp symbol)
+ (let ((file-name (ac-symbol-file symbol 'defvar)))
+ (princ "a variable")
+ (when file-name
+ (princ " defined in `")
+ (princ (if (eq file-name 'C-source)
+ "C source code"
+ (file-name-nondirectory file-name))))
+ (princ "'.\n\n")
+ (princ (or (documentation-property symbol 'variable-documentation t)
+ "Not documented."))
+ (buffer-string)))
+ ((facep symbol)
+ (let ((file-name (ac-symbol-file symbol 'defface)))
+ (princ "a face")
+ (when file-name
+ (princ " defined in `")
+ (princ (if (eq file-name 'C-source)
+ "C source code"
+ (file-name-nondirectory file-name))))
+ (princ "'.\n\n")
+ (princ (or (documentation-property symbol 'face-documentation t)
+ "Not documented."))
+ (buffer-string)))
+ (t
+ (let ((doc (documentation-property symbol 'group-documentation t)))
+ (when doc
+ (princ "a group.\n\n")
+ (princ doc)
+ (buffer-string)))))))))
+
+(defun ac-symbol-candidates ()
+ (or ac-symbols-cache
+ (setq ac-symbols-cache
+ (loop for x being the symbols
+ if (or (fboundp x)
+ (boundp x)
+ (symbol-plist x))
+ collect (symbol-name x)))))
+
+(ac-define-source symbols
+ '((candidates . ac-symbol-candidates)
+ (document . ac-symbol-documentation)
+ (symbol . "s")
+ (cache)))
+
+;; Lisp functions source
+(defvar ac-functions-cache nil)
+(ac-clear-variable-every-10-minutes 'ac-functions-cache)
+
+(defun ac-function-candidates ()
+ (or ac-functions-cache
+ (setq ac-functions-cache
+ (loop for x being the symbols
+ if (fboundp x)
+ collect (symbol-name x)))))
+
+(ac-define-source functions
+ '((candidates . ac-function-candidates)
+ (document . ac-symbol-documentation)
+ (symbol . "f")
+ (prefix . "(\\(\\(?:\\sw\\|\\s_\\)+\\)")
+ (cache)))
+
+;; Lisp variables source
+(defvar ac-variables-cache nil)
+(ac-clear-variable-every-10-minutes 'ac-variables-cache)
+
+(defun ac-variable-candidates ()
+ (or ac-variables-cache
+ (setq ac-variables-cache
+ (loop for x being the symbols
+ if (boundp x)
+ collect (symbol-name x)))))
+
+(ac-define-source variables
+ '((candidates . ac-variable-candidates)
+ (document . ac-symbol-documentation)
+ (symbol . "v")
+ (cache)))
+
+;; Lisp features source
+(defvar ac-emacs-lisp-features nil)
+(ac-clear-variable-every-10-minutes 'ac-emacs-lisp-features)
+
+(defun ac-emacs-lisp-feature-candidates ()
+ (or ac-emacs-lisp-features
+ (if (fboundp 'find-library-suffixes)
+ (let ((suffix (concat (regexp-opt (find-library-suffixes) t) "\\'")))
+ (setq ac-emacs-lisp-features
+ (append (mapcar 'prin1-to-string features)
+ (loop for dir in load-path
+ if (file-directory-p dir)
+ append (loop for file in (directory-files dir)
+ if (string-match suffix file)
+ collect (substring file 0 (match-beginning 0))))))))))
+
+(ac-define-source features
+ '((depends find-func)
+ (candidates . ac-emacs-lisp-feature-candidates)
+ (prefix . "require +'\\(\\(?:\\sw\\|\\s_\\)*\\)")
+ (requires . 0)))
+
+(defvaralias 'ac-source-emacs-lisp-features 'ac-source-features)
+
+;; Abbrev source
+(ac-define-source abbrev
+ '((candidates . (mapcar 'popup-x-to-string (append (vconcat local-abbrev-table global-abbrev-table) nil)))
+ (action . expand-abbrev)
+ (symbol . "a")
+ (cache)))
+
+;; Files in current directory source
+(ac-define-source files-in-current-dir
+ '((candidates . (directory-files default-directory))
+ (cache)))
+
+;; Filename source
+(defvar ac-filename-cache nil)
+
+(defun ac-filename-candidate ()
+ (unless (file-regular-p ac-prefix)
+ (ignore-errors
+ (loop with dir = (file-name-directory ac-prefix)
+ with files = (or (assoc-default dir ac-filename-cache)
+ (let ((files (directory-files dir nil "^[^.]")))
+ (push (cons dir files) ac-filename-cache)
+ files))
+ for file in files
+ for path = (concat dir file)
+ collect (if (file-directory-p path)
+ (concat path "/")
+ path)))))
+
+(ac-define-source filename
+ '((init . (setq ac-filename-cache nil))
+ (candidates . ac-filename-candidate)
+ (prefix . valid-file)
+ (requires . 0)
+ (action . ac-start)
+ (limit . nil)))
+
+;; Dictionary source
+(defcustom ac-user-dictionary nil
+ "User dictionary"
+ :type '(repeat string)
+ :group 'auto-complete)
+
+(defcustom ac-user-dictionary-files '("~/.dict")
+ "User dictionary files."
+ :type '(repeat string)
+ :group 'auto-complete)
+
+(defcustom ac-dictionary-directories nil
+ "Dictionary directories."
+ :type '(repeat string)
+ :group 'auto-complete)
+
+(defvar ac-dictionary nil)
+(defvar ac-dictionary-cache (make-hash-table :test 'equal))
+
+(defun ac-clear-dictionary-cache ()
+ (interactive)
+ (clrhash ac-dictionary-cache))
+
+(defun ac-read-file-dictionary (filename)
+ (let ((cache (gethash filename ac-dictionary-cache 'none)))
+ (if (and cache (not (eq cache 'none)))
+ cache
+ (let (result)
+ (ignore-errors
+ (with-temp-buffer
+ (insert-file-contents filename)
+ (setq result (split-string (buffer-string) "\n"))))
+ (puthash filename result ac-dictionary-cache)
+ result))))
+
+(defun ac-buffer-dictionary ()
+ (apply 'append
+ (mapcar 'ac-read-file-dictionary
+ (mapcar (lambda (name)
+ (loop for dir in ac-dictionary-directories
+ for file = (concat dir "/" name)
+ if (file-exists-p file)
+ return file))
+ (list (symbol-name major-mode)
+ (ignore-errors
+ (file-name-extension (buffer-file-name))))))))
+
+(defun ac-dictionary-candidates ()
+ (apply 'append `(,ac-user-dictionary
+ ,(ac-buffer-dictionary)
+ ,@(mapcar 'ac-read-file-dictionary
+ ac-user-dictionary-files))))
+
+(ac-define-source dictionary
+ '((candidates . ac-dictionary-candidates)
+ (symbol . "d")))
+
+(provide 'auto-complete)
+;;; auto-complete.el ends here
diff --git a/emacs.d/autopair.el b/emacs.d/autopair.el
new file mode 100644
index 0000000..31626f2
--- /dev/null
+++ b/emacs.d/autopair.el
@@ -0,0 +1,1036 @@
+;;; autopair.el --- Automagically pair braces and quotes like TextMate
+
+;; Copyright (C) 2009,2010 Joao Tavora
+
+;; Author: Joao Tavora <joaotavora [at] gmail.com>
+;; Keywords: convenience, emulations
+;; X-URL: http://autopair.googlecode.com
+;; URL: http://autopair.googlecode.com
+;; EmacsWiki: AutoPairs
+;; Version: 0.4
+;; Revision: $Rev$ ($LastChangedDate$)
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Another stab at making braces and quotes pair like in
+;; TextMate:
+;;
+;; * Opening braces/quotes are autopaired;
+;; * Closing braces/quotes are autoskipped;
+;; * Backspacing an opening brace/quote autodeletes its adjacent pair.
+;; * Newline between newly-opened brace pairs open an extra indented line.
+;;
+;; Autopair deduces from the current syntax table which characters to
+;; pair, skip or delete.
+;;
+;;; Installation:
+;;
+;; (require 'autopair)
+;; (autopair-global-mode) ;; to enable in all buffers
+;;
+;; To enable autopair in just some types of buffers, comment out the
+;; `autopair-global-mode' and put autopair-mode in some major-mode
+;; hook, like:
+;;
+;; (add-hook 'c-mode-common-hook #'(lambda () (autopair-mode)))
+;;
+;; Alternatively, do use `autopair-global-mode' and create
+;; *exceptions* using the `autopair-dont-activate' local variable,
+;; like:
+;;
+;; (add-hook 'c-mode-common-hook #'(lambda () (setq autopair-dont-activate t)))
+;;
+;;; Use:
+;;
+;; The extension works by rebinding the braces and quotes keys, but
+;; can still be minimally intrusive, since the original binding is
+;; always called as if autopair did not exist.
+;;
+;; The decision of which keys to actually rebind is taken at
+;; minor-mode activation time, based on the current major mode's
+;; syntax tables. To achieve this kind of behaviour, an emacs
+;; variable `emulation-mode-map-alists' was used.
+;;
+;; If you set `autopair-pair-criteria' and `autopair-skip-criteria' to
+;; 'help-balance (which, by the way, is the default), braces are not
+;; autopaired/autoskiped in all situations; the decision to autopair
+;; or autoskip a brace is taken according to the following table:
+;;
+;; +---------+------------+-----------+-------------------+
+;; | 1234567 | autopair? | autoskip? | notes |
+;; +---------+------------+-----------+-------------------+
+;; | (()) | yyyyyyy | ---yy-- | balanced |
+;; +---------+------------+-----------+-------------------+
+;; | (())) | ------y | ---yyy- | too many closings |
+;; +---------+------------+-----------+-------------------+
+;; | ((()) | yyyyyyy | ------- | too many openings |
+;; +---------+------------+-----------+-------------------+
+;;
+;; The table is read like this: in a buffer with 7 characters laid out
+;; like the first column, an "y" marks points where an opening brace
+;; is autopaired and in which places would a closing brace be
+;; autoskipped.
+;;
+;; Quote pairing tries to support similar "intelligence", but is less
+;; deterministic. Some inside-string or inside-comment situations may
+;; not always behave how you intend them to.
+;;
+;; The variable `autopair-autowrap' tells autopair to automatically
+;; wrap the selection region with the delimiters you're trying to
+;; insert. This is done conditionally based of syntaxes of the two
+;; ends of the selection region. It is compatible with `cua-mode's
+;; typing-deletes-selection behaviour. This feature is probably still
+;; a little unstable, hence `autopair-autowrap' defaults to nil.
+;;
+;; If you find the paren-blinking annoying, turn `autopair-blink' to
+;; nil.
+;;
+;; For lisp-programming you might also like `autopair-skip-whitespace'.
+;;
+;; For further customization have a look at `autopair-dont-pair',
+;; `autopair-handle-action-fns' and `autopair-extra-pair'.
+;;
+;; `autopair-dont-pair' lets you define special cases of characters
+;; you don't want paired. Its default value skips pairing
+;; single-quote characters when inside a comment literal, even if the
+;; language syntax tables does pair these characters.
+;;
+;; (defvar autopair-dont-pair `(:string (?') :comment (?'))
+;;
+;; As a further example, to also prevent the '{' (opening brace)
+;; character from being autopaired in C++ comments use this in your
+;; .emacs.
+;;
+;; (add-hook 'c++-mode-hook
+;; #'(lambda ()
+;; (push ?{
+;; (getf autopair-dont-pair :comment))))
+;;
+;; `autopair-handle-action-fns' lets you override/extend the actions
+;; taken by autopair after it decides something must be paired,skipped
+;; or deleted. To work with triple quoting in python mode, you can use
+;; this for example:
+;;
+;; (add-hook 'python-mode-hook
+;; #'(lambda ()
+;; (setq autopair-handle-action-fns
+;; (list #'autopair-default-handle-action
+;; #'autopair-python-triple-quote-action))))
+;;
+;; It's also useful to deal with latex's mode use of the "paired
+;; delimiter" syntax class.
+;;
+;; (add-hook 'latex-mode-hook
+;; #'(lambda ()
+;; (set (make-local-variable 'autopair-handle-action-fns)
+;; (list #'autopair-default-handle-action
+;; #'autopair-latex-mode-paired-delimiter-action))))
+;;
+;; `autopair-extra-pairs' lets you define extra pairing and skipping
+;; behaviour for pairs not programmed into the syntax table. Watch
+;; out, this is work-in-progress, a little unstable and does not help
+;; balancing at all. To have '<' and '>' pair in c++-mode buffers, but
+;; only in code, use:
+;;
+;; (add-hook 'c++-mode-hook
+;; #'(lambda ()
+;; (push '(?< . ?>)
+;; (getf autopair-extra-pairs :code))))
+;;
+;; if you program in emacs-lisp you might also like the following to
+;; pair backtick and quote
+;;
+;; (add-hook 'emacs-lisp-mode-hook
+;; #'(lambda ()
+;; (push '(?` . ?')
+;; (getf autopair-extra-pairs :comment))
+;; (push '(?` . ?')
+;; (getf autopair-extra-pairs :string))))
+;;
+;;; Bugs:
+;;
+;; * Quote pairing/skipping inside comments is not perfect...
+;;
+;; * See the last section on monkey-patching for the `defadvice'
+;; tricks used to make `autopair-autowrap' work with `cua-mode' and
+;; `delete-selection-mode'.
+;;
+;;; Credit:
+;;
+;; Thanks Ed Singleton for early testing.
+;;
+;;; Code:
+
+;; requires
+(require 'cl)
+
+;; variables
+(defvar autopair-pair-criteria 'help-balance
+ "How to decide whether to pair opening brackets or quotes.
+
+Set this to 'always to always pair, or 'help-balance to be more
+criterious when pairing.")
+
+(defvar autopair-skip-criteria 'help-balance
+ "How to decide whether to skip closing brackets or quotes.
+
+Set this to 'always to always skip, or 'help-balance to be more
+criterious when skipping.")
+
+(defvar autopair-emulation-alist nil
+ "A dinamic keymap for autopair set mostly from the current
+ syntax table.")
+
+(defvar autopair-dont-activate nil
+ "If non-nil `autopair-global-mode' does not activate in buffer")
+(make-variable-buffer-local 'autopair-dont-activate)
+
+(defvar autopair-extra-pairs nil
+ "Extra pairs for which to use pairing.
+
+It's a Common-lisp-style even-numbered property list, each pair
+of elements being of the form (TYPE , PAIRS). PAIRS is a mixed
+list whose elements are cons cells, which look like cells look
+like (OPENING . CLOSING). Autopair pairs these like
+parenthesis.
+
+TYPE can be one of:
+
+:string : whereby PAIRS will be considered only when inside a
+ string literal
+
+:comment : whereby PAIRS will be considered only when inside a comment
+
+:code : whereby PAIRS will be considered only when outisde a
+ string and a comment.
+
+:everywhere : whereby PAIRS will be considered in all situations
+
+In Emacs-lisp, this might be useful
+
+(add-hook 'emacs-lisp-mode-hook
+ #'(lambda ()
+ (setq autopair-extra-pairs `(:comment ((?`. ?'))))))
+
+
+Note that this does *not* work for single characters,
+e.x. characters you want to behave as quotes. See the
+docs/source comments for more details.")
+
+(make-variable-buffer-local 'autopair-extra-pairs)
+
+(defvar autopair-dont-pair `(:string (?') :comment (?'))
+ "Characters for which to skip any pairing behaviour.
+
+This variable overrides `autopair-pair-criteria' and
+`autopair-extra-pairs'. It does not
+ (currently) affect the skipping behaviour.
+
+It's a Common-lisp-style even-numbered property list, each pair
+of elements being of the form (TYPE , CHARS). CHARS is a list of
+characters and TYPE can be one of:
+
+:string : whereby characters in CHARS will not be autopaired when
+ inside a string literal
+
+:comment : whereby characters in CHARS will not be autopaired when
+ inside a comment
+
+:never : whereby characters in CHARS won't even have their
+ bindings replaced by autopair's. This particular option
+ should be used for troubleshooting and requires
+ `autopair-mode' to be restarted to have any effect.")
+(make-variable-buffer-local 'autopair-dont-pair)
+
+(defvar autopair-action nil
+ "Autopair action decided on by last interactive autopair command, or nil.
+
+When autopair decides on an action this is a list whose first
+three elements are (ACTION PAIR POS-BEFORE).
+
+ACTION is one of `opening', `insert-quote', `skip-quote',
+`backspace', `newline' or `paired-delimiter'. PAIR is the pair of
+the `last-input-event' character, if applicable. POS-BEFORE is
+value of point before action command took place .")
+
+
+(defvar autopair-wrap-action nil
+ "Autowrap action decided on by autopair, if any.
+
+When autopair decides on an action this is a list whose first
+three elements are (ACTION PAIR POS-BEFORE REGION-BEFORE).
+
+ACTION can only be `wrap' currently. PAIR and POS-BEFORE
+delimiter are as in `autopair-action'. REGION-BEFORE is a cons
+cell with the bounds of the region before the command takes
+place")
+
+(defvar autopair-handle-action-fns '()
+ "Autopair handlers to run *instead* of the default handler.
+
+Each element is a function taking three arguments (ACTION, PAIR
+and POS-BEFORE), which are the three elements of the
+`autopair-action' variable, which see.
+
+If non-nil, these functions are called *instead* of the single
+function `autopair-default-handle-action', so use this variable
+to specify special behaviour. To also run the default behaviour,
+be sure to include `autopair-default-handle-action' in the
+list, or call it from your handlers.")
+(make-variable-buffer-local 'autopair-handle-action-fns)
+
+(defvar autopair-handle-wrap-action-fns '()
+ "Autopair wrap handlers to run *instead* of the default handler.
+
+Each element is a function taking four arguments (ACTION, PAIR,
+POS-BEFORE and REGION-BEFORE), which are the three elements of the
+`autopair-wrap-action' variable, which see.
+
+If non-nil, these functions are called *instead* of the single
+function `autopair-default-handle-wrap-action', so use this
+variable to specify special behaviour. To also run the default
+behaviour, be sure to include `autopair-default-handle-wrap-action' in
+the list, or call it in your handlers.")
+(make-variable-buffer-local 'autopair-handle-wrap-action-fns)
+
+;; minor mode and global mode
+;;
+(define-globalized-minor-mode autopair-global-mode autopair-mode autopair-on)
+
+(defun autopair-on () (unless (or buffer-read-only autopair-dont-activate) (autopair-mode 1)))
+
+(define-minor-mode autopair-mode
+ "Automagically pair braces and quotes like in TextMate."
+ nil " pair" nil
+ (cond (autopair-mode
+ ;; Setup the dynamic emulation keymap
+ ;;
+ (let ((map (make-sparse-keymap)))
+ (define-key map [remap delete-backward-char] 'autopair-backspace)
+ (define-key map [remap backward-delete-char-untabify] 'autopair-backspace)
+ (define-key map (kbd "<backspace>") 'autopair-backspace)
+ (define-key map [backspace] 'autopair-backspace)
+ (define-key map (kbd "DEL") 'autopair-backspace)
+ (define-key map (kbd "RET") 'autopair-newline)
+ (dotimes (char 256) ;; only searches the first 256 chars,
+ ;; TODO: is this enough/toomuch/stupid?
+ (unless (member char
+ (getf autopair-dont-pair :never))
+ (let* ((syntax-entry (aref (syntax-table) char))
+ (class (and syntax-entry
+ (syntax-class syntax-entry)))
+ (pair (and syntax-entry
+ (cdr syntax-entry))))
+ (cond ((eq class (car (string-to-syntax "(")))
+ ;; syntax classes "opening parens" and "close parens"
+ (define-key map (string char) 'autopair-insert-opening)
+ (define-key map (string pair) 'autopair-skip-close-maybe))
+ ((eq class (car (string-to-syntax "\"")))
+ ;; syntax class "string quote
+ (define-key map (string char) 'autopair-insert-or-skip-quote))
+ ((eq class (car (string-to-syntax "$")))
+ ;; syntax class "paired-delimiter"
+ ;;
+ ;; Apropos this class, see Issues 18, 25 and
+ ;; elisp info node "35.2.1 Table of Syntax
+ ;; Classes". The fact that it supresses
+ ;; syntatic properties in the delimited region
+ ;; dictates that deciding to autopair/autoskip
+ ;; can't really be as clean as the string
+ ;; delimiter.
+ ;;
+ ;; Apparently, only `TeX-mode' uses this, so
+ ;; the best is to bind this to
+ ;; `autopair-insert-or-skip-paired-delimiter'
+ ;; which defers any decision making to
+ ;; mode-specific post-command handler
+ ;; functions.
+ ;;
+ (define-key map (string char) 'autopair-insert-or-skip-paired-delimiter))))))
+ ;; read `autopair-extra-pairs'
+ (dolist (pairs-list (remove-if-not #'listp autopair-extra-pairs))
+ (dolist (pair pairs-list)
+ (define-key map (string (car pair)) 'autopair-extra-insert-opening)
+ (define-key map (string (cdr pair)) 'autopair-extra-skip-close-maybe)))
+
+ (set (make-local-variable 'autopair-emulation-alist) (list (cons t map))))
+
+ (setq autopair-action nil)
+ (setq autopair-wrap-action nil)
+ (add-hook 'emulation-mode-map-alists 'autopair-emulation-alist 'append)
+ (add-hook 'post-command-hook 'autopair-post-command-handler 'append 'local))
+ (t
+ (setq autopair-emulation-alist nil)
+ (remove-hook 'emulation-mode-map-alists 'autopair-emulation-alist)
+ (remove-hook 'post-command-hook 'autopair-post-command-handler 'local))))
+
+;; helper functions
+;;
+(defun autopair-syntax-ppss ()
+ "Calculate syntax info relevant to autopair.
+
+A list of four elements is returned:
+
+- SYNTAX-INFO is either the result `syntax-ppss' or the result of
+ calling `parse-partial-sexp' with the appropriate
+ bounds (previously calculated with `syntax-ppss'.
+
+- WHERE-SYM can be one of the symbols :string, :comment or :code.
+
+- QUICK-SYNTAX-INFO is always the result returned by `syntax-ppss'.
+
+- BOUNDS are the boudaries of the current string or comment if
+ we're currently inside one."
+ (let* ((quick-syntax-info (syntax-ppss))
+ (string-or-comment-start (nth 8 quick-syntax-info)))
+ (cond (;; inside a string, recalculate
+ (nth 3 quick-syntax-info)
+ (list (parse-partial-sexp (1+ string-or-comment-start) (point))
+ :string
+ quick-syntax-info
+ (cons string-or-comment-start
+ (condition-case nil
+ (scan-sexps string-or-comment-start 1)
+ (error nil)))))
+ ((nth 4 quick-syntax-info)
+ (list (parse-partial-sexp (1+ (nth 8 quick-syntax-info)) (point))
+ :comment
+ quick-syntax-info))
+ (t
+ (list quick-syntax-info
+ :code
+ quick-syntax-info)))))
+
+(defun autopair-find-pair (delim)
+ (when (and delim
+ (integerp delim))
+ (let ((syntax-entry (aref (syntax-table) delim)))
+ (cond ((eq (syntax-class syntax-entry) (car (string-to-syntax "(")))
+ (cdr syntax-entry))
+ ((or (eq (syntax-class syntax-entry) (car (string-to-syntax "\"")))
+ (eq (syntax-class syntax-entry) (car (string-to-syntax "$"))))
+ delim)
+ ((eq (syntax-class syntax-entry) (car (string-to-syntax ")")))
+ (cdr syntax-entry))
+ (autopair-extra-pairs
+ (some #'(lambda (pair-list)
+ (some #'(lambda (pair)
+ (cond ((eq (cdr pair) delim) (car pair))
+ ((eq (car pair) delim) (cdr pair))))
+ pair-list))
+ (remove-if-not #'listp autopair-extra-pairs)))))))
+
+(defun autopair-calculate-wrap-action ()
+ (when (region-active-p)
+ (save-excursion
+ (let* ((region-before (cons (region-beginning)
+ (region-end)))
+ (point-before (point))
+ (start-syntax (syntax-ppss (car region-before)))
+ (end-syntax (syntax-ppss (cdr region-before))))
+ (when (and (eq (nth 0 start-syntax) (nth 0 end-syntax))
+ (eq (nth 3 start-syntax) (nth 3 end-syntax)))
+ (list 'wrap (or (second autopair-action)
+ (autopair-find-pair last-input-event))
+ point-before
+ region-before))))))
+
+(defun autopair-fallback (&optional fallback-keys)
+ (let* ((autopair-emulation-alist nil)
+ (beyond-cua (let ((cua--keymap-alist nil))
+ (or (key-binding (this-single-command-keys))
+ (key-binding fallback-keys))))
+ (beyond-autopair (or (key-binding (this-single-command-keys))
+ (key-binding fallback-keys))))
+ (when autopair-autowrap
+ (setq autopair-wrap-action (autopair-calculate-wrap-action)))
+
+ (setq this-original-command beyond-cua)
+ ;; defer to "paredit-mode" if that is installed and running
+ (when (and (featurep 'paredit)
+ (string-match "paredit" (symbol-name beyond-cua)))
+ (setq autopair-action nil))
+ (let ((cua-delete-selection (not autopair-autowrap))
+ (blink-matching-paren (not autopair-action)))
+ (call-interactively beyond-autopair))))
+
+(defvar autopair-autowrap nil
+ "If non-nil autopair attempts to wrap the selected region.
+
+This is also done in an optimistic \"try-to-balance\" fashion.")
+
+(defvar autopair-skip-whitespace nil
+ "If non-nil also skip over whitespace when skipping closing delimiters.
+
+This will be most useful in lisp-like languages where you want
+lots of )))))....")
+
+(defvar autopair-blink (if (boundp 'blink-matching-paren)
+ blink-matching-paren
+ t)
+ "If non-nil autopair blinks matching delimiters.")
+
+(defvar autopair-blink-delay 0.1
+ "Autopair's blink-the-delimiter delay.")
+
+(defun autopair-document-bindings (&optional fallback-keys)
+ (concat
+ "Works by scheduling possible autopair behaviour, then calls
+original command as if autopair didn't exist"
+ (when (eq this-command 'describe-key)
+ (let* ((autopair-emulation-alist nil)
+ (command (or (key-binding (this-single-command-keys))
+ (key-binding fallback-keys))))
+ (when command
+ (format ", which in this case is `%s'" command))))
+ "."))
+
+(defun autopair-escaped-p (syntax-info)
+ (nth 5 syntax-info))
+
+(defun autopair-exception-p (where-sym exception-where-sym blacklist &optional fn)
+ (and (or (eq exception-where-sym :everywhere)
+ (eq exception-where-sym where-sym))
+ (member last-input-event
+ (if fn
+ (mapcar fn (getf blacklist exception-where-sym))
+ (getf blacklist exception-where-sym)))))
+
+(defun autopair-up-list (syntax-info &optional closing)
+ "Try to uplist as much as possible, moving point.
+
+Return nil if something prevented uplisting.
+
+Otherwise return a cons of char positions of the starting
+delimiter and end delimiters of the last list we just came out
+of. If we aren't inside any lists return a cons of current point.
+
+If inside nested lists of mixed parethesis types, finding a
+matching parenthesis of a mixed-type is considered OK (non-nil is
+returned) and uplisting stops there."
+ (condition-case nil
+ (let ((howmany (car syntax-info))
+ (retval (cons (point)
+ (point))))
+ (while (and (> howmany 0)
+ (condition-case err
+ (progn
+ (scan-sexps (point) (- (point-max)))
+ (error err))
+ (error (let ((opening (and closing
+ (autopair-find-pair closing))))
+ (setq retval (cons (fourth err)
+ (point)))
+ (or (not opening)
+ (eq opening (char-after (fourth err))))))))
+ (goto-char (scan-lists (point) 1 1))
+ (decf howmany))
+ retval)
+ (error nil)))
+
+;; interactive commands and their associated predicates
+;;
+(defun autopair-insert-or-skip-quote ()
+ (interactive)
+ (let* ((syntax-triplet (autopair-syntax-ppss))
+ (syntax-info (first syntax-triplet))
+ (where-sym (second syntax-triplet))
+ (orig-info (third syntax-triplet))
+ ;; inside-string may the quote character itself or t if this
+ ;; is a "generically terminated string"
+ (inside-string (and (eq where-sym :string)
+ (fourth orig-info)))
+ (escaped-p (autopair-escaped-p syntax-info))
+
+ )
+ (cond (;; decides whether to skip the quote...
+ ;;
+ (and (not escaped-p)
+ (eq last-input-event (char-after (point)))
+ (or
+ ;; ... if we're already inside a string and the
+ ;; string starts with the character just inserted,
+ ;; or it's a generically terminated string
+ (and inside-string
+ (or (eq inside-string t)
+ (eq last-input-event inside-string)))
+ ;; ... if we're in a comment and ending a string
+ ;; (the inside-string criteria does not work
+ ;; here...)
+ (and (eq where-sym :comment)
+ (condition-case nil
+ (eq last-input-event (char-after (scan-sexps (1+ (point)) -1)))
+ (error nil)))))
+ (setq autopair-action (list 'skip-quote last-input-event (point))))
+ (;; decides whether to pair, i.e do *not* pair the quote if...
+ ;;
+ (not
+ (or
+ escaped-p
+ ;; ... inside a generic string
+ (eq inside-string t)
+ ;; ... inside an unterminated string started by this char
+ (autopair-in-unterminated-string-p syntax-triplet)
+ ;; ... uplisting forward causes an error which leaves us
+ ;; inside an unterminated string started by this char
+ (condition-case err
+ (progn (save-excursion (up-list)) nil)
+ (error
+ (autopair-in-unterminated-string-p (save-excursion
+ (goto-char (fourth err))
+ (autopair-syntax-ppss)))))
+ (autopair-in-unterminated-string-p (save-excursion
+ (goto-char (point-max))
+ (autopair-syntax-ppss)))
+ ;; ... comment-disable or string-disable are true here.
+ ;; The latter is only useful if we're in a string
+ ;; terminated by a character other than
+ ;; `last-input-event'.
+ (some #'(lambda (sym)
+ (autopair-exception-p where-sym sym autopair-dont-pair))
+ '(:comment :string))))
+ (setq autopair-action (list 'insert-quote last-input-event (point)))))
+ (autopair-fallback)))
+
+ (put 'autopair-insert-or-skip-quote 'function-documentation
+ '(concat "Insert or possibly skip over a quoting character.\n\n"
+ (autopair-document-bindings)))
+
+(defun autopair-in-unterminated-string-p (autopair-triplet)
+ (and (eq last-input-event (fourth (third autopair-triplet)))
+ (condition-case nil (progn (scan-sexps (ninth (third autopair-triplet)) 1) nil) (error t))))
+
+
+(defun autopair-insert-opening ()
+ (interactive)
+ (when (autopair-pair-p)
+ (setq autopair-action (list 'opening (autopair-find-pair last-input-event) (point))))
+ (autopair-fallback))
+(put 'autopair-insert-opening 'function-documentation
+ '(concat "Insert opening delimiter and possibly automatically close it.\n\n"
+ (autopair-document-bindings)))
+
+(defun autopair-skip-close-maybe ()
+ (interactive)
+ (when (autopair-skip-p)
+ (setq autopair-action (list 'closing (autopair-find-pair last-input-event) (point))))
+ (autopair-fallback))
+(put 'autopair-skip-close-maybe 'function-documentation
+ '(concat "Insert or possibly skip over a closing delimiter.\n\n"
+ (autopair-document-bindings)))
+
+(defun autopair-backspace ()
+ (interactive)
+ (when (char-before)
+ (setq autopair-action (list 'backspace (autopair-find-pair (char-before)) (point))))
+ (autopair-fallback (kbd "DEL")))
+(put 'autopair-backspace 'function-documentation
+ '(concat "Possibly delete a pair of paired delimiters.\n\n"
+ (autopair-document-bindings (kbd "DEL"))))
+
+(defun autopair-newline ()
+ (interactive)
+ (let ((pair (autopair-find-pair (char-before))))
+ (when (eq (char-after) pair)
+ (setq autopair-action (list 'newline pair (point))))
+ (autopair-fallback (kbd "RET"))))
+(put 'autopair-newline 'function-documentation
+ '(concat "Possibly insert two newlines and place point after the first, indented.\n\n"
+ (autopair-document-bindings (kbd "RET"))))
+
+(defun autopair-skip-p ()
+ (interactive)
+ (let* ((syntax-triplet (autopair-syntax-ppss))
+ (syntax-info (first syntax-triplet))
+ (orig-point (point)))
+ (cond ((eq autopair-skip-criteria 'help-balance)
+ (save-excursion
+ (let ((pos-pair (autopair-up-list syntax-info last-input-event)))
+ ;; if `autopair-up-list' returned something valid, we
+ ;; probably want to skip but only if on of the following is true.
+ ;;
+ ;; 1. it returned a cons of equal values (we're not inside any list
+ ;;
+ ;; 2. up-listing stopped at a list that contains our original point
+ ;;
+ ;; 3. up-listing stopped at a list that does not
+ ;; contain out original point but its starting
+ ;; delimiter matches the one we expect.
+ (and pos-pair
+ (or (eq (car pos-pair) (cdr pos-pair))
+ (< orig-point (cdr pos-pair))
+ (eq (char-after (car pos-pair))
+ (autopair-find-pair last-input-event)))))))
+ ((eq autopair-skip-criteria 'need-opening)
+ (save-excursion
+ (condition-case err
+ (progn
+ (backward-list)
+ t)
+ (error nil))))
+ (t
+ t))))
+
+(defun autopair-pair-p ()
+ (let* ((syntax-triplet (autopair-syntax-ppss))
+ (syntax-info (first syntax-triplet))
+ (where-sym (second syntax-triplet))
+ (orig-point (point)))
+ (and (not (some #'(lambda (sym)
+ (autopair-exception-p where-sym sym autopair-dont-pair))
+ '(:string :comment :code :everywhere)))
+ (cond ((eq autopair-pair-criteria 'help-balance)
+ (and (not (autopair-escaped-p syntax-info))
+ (save-excursion
+ (let ((pos-pair (autopair-up-list syntax-info))
+ (prev-point (point-max))
+ (expected-closing (autopair-find-pair last-input-event)))
+ (condition-case err
+ (progn
+ (while (not (eq prev-point (point)))
+ (setq prev-point (point))
+ (forward-sexp))
+ t)
+ (error
+ ;; if `forward-sexp' (called byp
+ ;; `autopair-forward') returned an error.
+ ;; typically we don't want to autopair,
+ ;; unless one of the following occurs:
+ ;;
+ (cond (;; 1. The error is *not* of type "containing
+ ;; expression ends prematurely", which means
+ ;; we're in the "too-many-openings" situation
+ ;; and thus want to autopair.
+ (not (string-match "prematurely" (second err)))
+ t)
+ (;; 2. We stopped at a closing parenthesis. Do
+ ;; autopair if we're in a mixed parens situation,
+ ;; i.e. the last list jumped over was started by
+ ;; the paren we're trying to match
+ ;; (`last-input-event') and ended by a different
+ ;; parens, or the closing paren we stopped at is
+ ;; also different from the expected. The second
+ ;; `scan-lists' places point at the closing of the
+ ;; last list we forwarded over.
+ ;;
+ (condition-case err
+ (prog1
+ (eq (char-after (scan-lists (point) -1 0))
+ last-input-event)
+ (goto-char (scan-lists (point) -1 -1)))
+ (error t))
+
+ (or
+ ;; mixed () ] for input (, yes autopair
+ (not (eq expected-closing (char-after (third err))))
+ ;; mixed (] ) for input (, yes autopair
+ (not (eq expected-closing (char-after (point))))
+ ;; ()) for input (, not mixed
+ ;; hence no autopair
+ ))
+ (t
+ nil))
+ ;; (eq (fourth err) (point-max))
+ ))))))
+ ((eq autopair-pair-criteria 'always)
+ t)
+ (t
+ (not (autopair-escaped-p)))))))
+
+;; post-command-hook stuff
+;;
+(defun autopair-post-command-handler ()
+ "Performs pairing and wrapping based on `autopair-action' and
+`autopair-wrap-action'. "
+ (when (and autopair-wrap-action
+ (notany #'null autopair-wrap-action))
+
+ (if autopair-handle-wrap-action-fns
+ (condition-case err
+ (mapc #'(lambda (fn)
+ (apply fn autopair-wrap-action))
+ autopair-handle-wrap-action-fns)
+ (error (progn
+ (message "[autopair] error running custom `autopair-handle-wrap-action-fns', switching autopair off")
+ (autopair-mode -1))))
+ (apply #'autopair-default-handle-wrap-action autopair-wrap-action))
+ (setq autopair-wrap-action nil))
+
+ (when (and autopair-action
+ (notany #'null autopair-action))
+ (if autopair-handle-action-fns
+ (condition-case err
+ (mapc #'(lambda (fn)
+ (funcall fn (first autopair-action) (second autopair-action) (third autopair-action)))
+ autopair-handle-action-fns)
+ (error (progn
+ (message "[autopair] error running custom `autopair-handle-action-fns', switching autopair off")
+ (autopair-mode -1))))
+ (apply #'autopair-default-handle-action autopair-action))
+ (setq autopair-action nil)))
+
+(defun autopair-blink-matching-open ()
+ (let ((blink-matching-paren autopair-blink)
+ (show-paren-mode nil)
+ (blink-matching-delay autopair-blink-delay))
+ (blink-matching-open)))
+
+(defun autopair-blink (&optional pos)
+ (when autopair-blink
+ (if pos
+ (save-excursion
+ (goto-char pos)
+ (sit-for autopair-blink-delay))
+ (sit-for autopair-blink-delay))))
+
+(defun autopair-default-handle-action (action pair pos-before)
+ ;;(message "action is %s" action)
+ (cond (;; automatically insert closing delimiter
+ (and (eq 'opening action)
+ (not (eq pair (char-before))))
+ (insert pair)
+ (autopair-blink)
+ (backward-char 1))
+ (;; automatically insert closing quote delimiter
+ (eq 'insert-quote action)
+ (insert pair)
+ (autopair-blink)
+ (backward-char 1))
+ (;; automatically skip oper closer quote delimiter
+ (and (eq 'skip-quote action)
+ (eq pair (char-after (point))))
+ (delete-char 1)
+ (autopair-blink-matching-open))
+ (;; skip over newly-inserted-but-existing closing delimiter
+ ;; (normal case)
+ (eq 'closing action)
+ (let ((skipped 0))
+ (when autopair-skip-whitespace
+ (setq skipped (save-excursion (skip-chars-forward "\s\n\t"))))
+ (when (eq last-input-event (char-after (+ (point) skipped)))
+ (unless (zerop skipped) (autopair-blink (+ (point) skipped)))
+ (delete-char (1+ skipped))
+ (autopair-blink-matching-open))))
+ (;; autodelete closing delimiter
+ (and (eq 'backspace action)
+ (eq pair (char-after (point))))
+ (delete-char 1))
+ (;; opens an extra line after point, then indents
+ (and (eq 'newline action)
+ (eq pair (char-after (point))))
+ (save-excursion
+ (newline-and-indent))
+ (indent-according-to-mode)
+ (when (or (and (boundp 'global-hl-line-mode)
+ global-hl-line-mode)
+ (and (boundp 'hl-line-mode)
+ hl-line-mode))
+ (hl-line-unhighlight) (hl-line-highlight)))))
+
+(defun autopair-default-handle-wrap-action (action pair pos-before region-before)
+ "Default handler for the wrapping action in `autopair-wrap'"
+ (when (eq 'wrap action)
+ (let ((reverse-selected (= (car region-before) pos-before)))
+ (cond
+ ((eq 'opening (first autopair-action))
+ ;; (message "wrap-opening!")
+ (cond (reverse-selected
+ (goto-char (1+ (cdr region-before)))
+ (insert pair)
+ (autopair-blink)
+ (goto-char (1+ (car region-before))))
+ (t
+ (delete-backward-char 1)
+ (insert pair)
+ (goto-char (car region-before))
+ (insert last-input-event)))
+ (setq autopair-action nil) )
+ (;; wraps
+ (eq 'closing (first autopair-action))
+ ;; (message "wrap-closing!")
+ (cond (reverse-selected
+ (delete-backward-char 1)
+ (insert pair)
+ (goto-char (1+ (cdr region-before)))
+ (insert last-input-event))
+ (t
+ (goto-char (car region-before))
+ (insert pair)
+ (autopair-blink)
+ (goto-char (+ 2 (cdr region-before)))))
+ (setq autopair-action nil))
+ ((eq 'insert-quote (first autopair-action))
+ (cond (reverse-selected
+ (goto-char (1+ (cdr region-before)))
+ (insert pair)
+ (autopair-blink))
+ (t
+ (goto-char (car region-before))
+ (insert last-input-event)
+ (autopair-blink)))
+ (setq autopair-action nil))
+ (reverse-selected
+ (delete-backward-char 1)
+ (goto-char (cdr region-before))
+ (insert last-input-event))))))
+
+
+;; example python triple quote helper
+;;
+(defun autopair-python-triple-quote-action (action pair pos-before)
+ (cond ((and (eq 'insert-quote action)
+ (>= (point) 3)
+ (string= (buffer-substring (- (point) 3)
+ (point))
+ (make-string 3 pair)))
+ (save-excursion (insert (make-string 2 pair))))
+ ((and (eq 'backspace action)
+ (>= (point) 2)
+ (<= (point) (- (point-max) 2))
+ (string= (buffer-substring (- (point) 2)
+ (+ (point) 2))
+ (make-string 4 pair)))
+ (delete-region (- (point) 2)
+ (+ (point) 2)))
+ ((and (eq 'skip-quote action)
+ (<= (point) (- (point-max) 2))
+ (string= (buffer-substring (point)
+ (+ (point) 2))
+ (make-string 2 pair)))
+ (forward-char 2))
+ (t
+ t)))
+
+;; example latex paired-delimiter helper
+;;
+(defun autopair-latex-mode-paired-delimiter-action (action pair pos-before)
+ "Pair or skip latex's \"paired delimiter\" syntax in math mode."
+ (when (eq action 'paired-delimiter)
+ (when (eq (char-before) pair)
+ (if (and (eq (get-text-property pos-before 'face) 'tex-math)
+ (eq (char-after) pair))
+ (cond ((and (eq (char-after) pair)
+ (eq (char-after (1+ (point))) pair))
+ ;; double skip
+ (delete-char 1)
+ (forward-char))
+ ((eq (char-before pos-before) pair)
+ ;; doube insert
+ (insert pair)
+ (backward-char))
+ (t
+ ;; simple skip
+ (delete-char 1)))
+ (insert pair)
+ (backward-char)))))
+
+;; Commands and predicates for the autopair-extra* feature
+;;
+
+(defun autopair-extra-insert-opening ()
+ (interactive)
+ (when (autopair-extra-pair-p)
+ (setq autopair-action (list 'opening (autopair-find-pair last-input-event) (point))))
+ (autopair-fallback))
+(put 'autopair-extra-insert-opening 'function-documentation
+ '(concat "Insert (an extra) opening delimiter and possibly automatically close it.\n\n"
+ (autopair-document-bindings)))
+
+(defun autopair-extra-skip-close-maybe ()
+ (interactive)
+ (when (autopair-extra-skip-p)
+ (setq autopair-action (list 'closing last-input-event (point))))
+ (autopair-fallback))
+(put 'autopair-extra-skip-close-maybe 'function-documentation
+ '(concat "Insert or possibly skip over a (and extra) closing delimiter.\n\n"
+ (autopair-document-bindings)))
+
+(defun autopair-extra-pair-p ()
+ (let* ((syntax-triplet (autopair-syntax-ppss))
+ (syntax-info (first syntax-triplet))
+ (where-sym (second syntax-triplet)))
+ (some #'(lambda (sym)
+ (autopair-exception-p where-sym sym autopair-extra-pairs #'car))
+ '(:everywhere :comment :string :code))))
+
+(defun autopair-extra-skip-p ()
+ (let* ((syntax-triplet (autopair-syntax-ppss))
+ (syntax-info (first syntax-triplet))
+ (where-sym (second syntax-triplet))
+ (orig-point (point)))
+ (and (eq (char-after (point)) last-input-event)
+ (some #'(lambda (sym)
+ (autopair-exception-p where-sym sym autopair-extra-pairs #'cdr))
+ '(:comment :string :code :everywhere))
+ (save-excursion
+ (condition-case err
+ (backward-sexp (point-max))
+ (error
+ (goto-char (third err))))
+ (search-forward (make-string 1 (autopair-find-pair last-input-event))
+ orig-point
+ 'noerror)))))
+
+;; Commands and tex-mode specific handler functions for the "paired
+;; delimiter" syntax class.
+;;
+(defun autopair-insert-or-skip-paired-delimiter ()
+ " insert or skip a character paired delimiter"
+ (interactive)
+ (setq autopair-action (list 'paired-delimiter last-input-event (point)))
+ (autopair-fallback))
+
+(put 'autopair-insert-or-skip-paired-delimiter 'function-documentation
+ '(concat "Insert or possibly skip over a character with a syntax-class of \"paired delimiter\"."
+ (autopair-document-bindings)))
+
+
+
+;; monkey-patching: Compatibility with delete-selection-mode and cua-mode
+;;
+;; Ideally one would be able to use functions as the value of the
+;; 'delete-selection properties of the autopair commands. The function
+;; would return non-nil when no wrapping should/could be performed.
+;;
+;; Until then use some `defadvice' i.e. monkey-patching
+;;
+(put 'autopair-insert-opening 'delete-selection t)
+(put 'autopair-skip-close-maybe 'delete-selection t)
+(put 'autopair-insert-or-skip-quote 'delete-selection t)
+(put 'autopair-extra-insert-opening 'delete-selection t)
+(put 'autopair-extra-skip-close-maybe 'delete-selection t)
+(put 'autopair-backspace 'delete-selection 'supersede)
+(put 'autopair-newline 'delete-selection t)
+
+(defun autopair-should-autowrap ()
+ (let ((name (symbol-name this-command)))
+ (and autopair-mode
+ (not (eq this-command 'autopair-backspace))
+ (string-match "^autopair" (symbol-name this-command))
+ (autopair-calculate-wrap-action))))
+
+(defadvice cua--pre-command-handler-1 (around autopair-override activate)
+ "Don't actually do anything if autopair is about to autowrap. "
+ (unless (autopair-should-autowrap) ad-do-it))
+
+(defadvice delete-selection-pre-hook (around autopair-override activate)
+ "Don't actually do anything if autopair is about to autowrap. "
+ (unless (autopair-should-autowrap) ad-do-it))
+
+
+(provide 'autopair)
+;;; autopair.el ends here
+;;
diff --git a/emacs.d/batch-mode.el b/emacs.d/batch-mode.el
new file mode 100644
index 0000000..dcc156a
--- /dev/null
+++ b/emacs.d/batch-mode.el
@@ -0,0 +1,156 @@
+;;; batch-mode.el --- major mode for editing ESRI batch scrips
+;;; Copyright (C) 2002, Agnar Renolen <agnar.renolen@emap.no>
+;;; Modified (c) 2009, Matthew Fidler <matthew.fidler at gmail.com>
+;;; Fixed indents (and labels)
+
+;; batch-mode.el 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 of the License, 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; if not, write to the Free Software
+;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+;; This is version 1.0 of 21 August 2002.
+
+;;; Comentary:
+
+;; The batch-mode provides syntax hilighting and auto-indentation for
+;; DOS batch files (.bat). and auto-idendation.
+
+;; Agnar Renolen, <agnar.renolen@emap.no>
+
+;;; Code:
+
+(defgroup batch nil
+ "Major mode for editing batch code"
+ :prefix "batch-"
+ :group 'languages)
+
+; (defvar batch-mode-hook nil
+; "Hooks called when batch mode fires up."
+; :type 'hook
+; :group 'batch)
+
+(defvar batch-mode-map nil
+ "Keymap used with batch code")
+
+(defcustom batch-indent-level 4
+ "Amount by which batch subexpressions are indented."
+ :type 'integer
+ :group 'batch)
+
+(defvar batch-font-lock-keywords
+ (eval-when-compile
+ (list
+ ; since we can't specify batch comments through the syntax table,
+ ; we have to specify it here, and override whatever is highlighted
+ '( "^[ \t]*rem\\>.*" (0 font-lock-comment-face t))
+
+ ; since the argument to the echo command is a string, we format it
+ ; as a string
+ '( "\\<echo\\>[ \t]*\\(.*\\)" (1 font-lock-string-face t))
+
+ ; the argument of the goto statement is a label
+ '( "\\<goto\\>[ \t]*\\([a-zA-Z0-9_]+\\)" (1
+ font-lock-constant-face))
+
+ ; the keywords of batch (which are not built-in commands)
+ (concat "\\<\\(cmdextversion\\|"
+ "d\\(efined\\|isableextensions\\|o\\)\\|"
+ "e\\(lse\\|n\\(ableextensions\\|dlocal\\)"
+ "\\|qu\\|rrorlevel\\|xist\\)\\|for\\|"
+ "goto\\|i[fn]\\|n\\(eq\\|ot\\)\\|setlocal\\)\\>")
+
+ ; built-in DOS commands
+ (cons (concat "\\<\\(a\\(ssoc\\|t\\(\\|trib\\)\\)\\|break\\|"
+ "c\\(a\\(cls\\|ll\\)\\|d\\|h\\(cp\\|dir\\|k\\("
+ "dsk\\|ntfs\\)\\)\\|ls\\|md\\|o\\(lor\\|mp\\(\\|act\\)"
+ "\\|nvert\\|py\\)\\)\\|d\\(ate\\|el\\|i\\("
+ "r\\|skco\\(mp\\|py\\)\\)\\|oskey\\)\\|"
+ "e\\(cho\\|rase\\|xit\\)\\|"
+ "f\\(c\\|ind\\(\\|str\\)\\|for\\(\\|mot\\)\\|type\\)\\|"
+ "graftabl\\|help\\|label\\|"
+ "m\\(d\\|mkdir\\|o[dvr]e\\)\\|p\\(a\\(th\\|use\\)"
+ "\\|opd\\|r\\(int\\|opmt\\)\\|ushd\\)\\|"
+ "r\\(d\\|e\\(cover\\|n\\(\\|ame\\)\\|place\\)\\|mdir\\)\\|"
+ "s\\(et\\|hift\\|ort\\|tart\\|ubst\\)\\|"
+ "t\\(i\\(me\\|tle\\)\\|ree\\|ype\\)\\|"
+ "v\\(er\\(\\|ify\\)\\|ol\\)\\|xcopy\\)\\>")
+ 'font-lock-builtin-face)
+
+ ; variables are embeded in percent chars
+ '( "%[a-zA-Z0-9_]+%?" . font-lock-variable-name-face)
+ ; labels are formatted as constants
+ '( ":[a-zA-Z0-9_]+" . font-lock-constant-face)
+
+ ; command line switches are hilighted as type-face
+ '( "[-/][a-zA-Z0-9_]+" . font-lock-type-face)
+
+ ; variables set should also be hilighted with variable-name-face
+ '( "\\<set\\>[ \t]*\\([a-zA-Z0-9_]+\\)" (1 font-lock-variable-name-face))
+ )))
+
+
+;;;###autoload
+(defun batch-mode ()
+ "Major mode for editing batch scripts."
+ (interactive)
+ (kill-all-local-variables)
+ (setq major-mode 'batch-mode)
+ (setq mode-name "Avenue")
+ (set (make-local-variable 'indent-line-function) 'batch-indent-line)
+ (set (make-local-variable 'comment-start) "rem")
+ (set (make-local-variable 'comment-start-skip) "rem[ \t]*")
+ (set (make-local-variable 'font-lock-defaults)
+ '(batch-font-lock-keywords nil t nil))
+ (run-hooks 'batch-mode-hook))
+
+(defun batch-indent-line ()
+ "Indent current line as batch script"
+ (let ((indent (batch-calculate-indent))
+ beg shift-amt
+ (old-pos (- (point-max) (point))))
+ (beginning-of-line)
+ (setq beg (point))
+ (skip-chars-forward " \t")
+ (if (looking-at ")")
+ (setq indent (max (- indent batch-indent-level))))
+ (message "prev indent: %d" indent)
+ (setq shift-amt (- indent (current-column)))
+ (if (not (zerop shift-amt))
+ (progn
+ (delete-region beg (point))
+ ; ArcView replaces tabs with single spaces, so we only insert
+ ; spaces to make indentation correct in ArcView.
+ (insert-char ? indent)
+ (if (> (- (point-max) old-pos) (point))
+ (goto-char (- (point-max) old-pos)))))
+ shift-amt))
+
+(defun batch-calculate-indent ()
+ "Return appropriate indentation for the current line as batch code."
+ (save-excursion
+ (beginning-of-line)
+ (current-indentation)
+ (if (bobp)
+ 0
+ (if (re-search-backward "^[ \t]*[^ \t\n\r]" nil t)
+ (if (looking-at "[ \t]*\\()[ \t]*else\\|for\\|if\\)\\>[^(\n]*([^)\n]*")
+ (+ (current-indentation) batch-indent-level)
+ (if (looking-at "[ \t]*[^(]*)[ \t]*")
+ (- (current-indentation) batch-indent-level)
+ (current-indentation)))
+ 0))))
+
+(add-to-list 'auto-mode-alist '("\\.bat\\'" . batch-mode))
+
+(provide 'batch-mode)
+
+;;; batch-mode.el ends here
diff --git a/emacs.d/color-theme-gruber-darker.el b/emacs.d/color-theme-gruber-darker.el
new file mode 100644
index 0000000..5ee82a2
--- /dev/null
+++ b/emacs.d/color-theme-gruber-darker.el
@@ -0,0 +1,101 @@
+;; color-theme-gruber-dark.el
+;; Revision 1
+;;
+;; Copyright (C) 2009-2010 Jason R. Blevins
+;;
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use,
+;; copy, modify, merge, publish, distribute, sublicense, and/or sell
+;; copies of the Software, and to permit persons to whom the
+;; Software is furnished to do so, subject to the following
+;; conditions:
+;;
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+;;
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+;; OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+;; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+;; OTHER DEALINGS IN THE SOFTWARE.
+
+(require 'color-theme)
+
+(defun color-theme-gruber-darker ()
+ "Gruber Darker color theme for Emacs by Jason Blevins.
+A darker variant of the Gruber Dark theme for BBEdit
+by John Gruber."
+ (interactive)
+ (color-theme-install
+ '(color-theme-gruber-darker
+ ((foreground-color . "#e4e4ef")
+ (background-color . "#181818")
+ (background-mode . dark)
+ (cursor-color . "#ffdd33")
+ (mouse-color . "#ffdd33"))
+
+ ;; Standard font lock faces
+ (default ((t (nil))))
+ (font-lock-comment-face ((t (:foreground "#cc8c3c"))))
+ (font-lock-comment-delimiter-face ((t (:foreground "#cc8c3c"))))
+ (font-lock-doc-face ((t (:foreground "#73c936"))))
+ (font-lock-doc-string-face ((t (:foreground "#73c936"))))
+ (font-lock-string-face ((t (:foreground "#73c936"))))
+ (font-lock-keyword-face ((t (:foreground "#ffdd33"))))
+ (font-lock-builtin-face ((t (:foreground "#ffdd33"))))
+ (font-lock-function-name-face ((t (:foreground "#96a6c8"))))
+ (font-lock-variable-name-face ((t (:foreground "#f4f4ff"))))
+ (font-lock-preprocessor-face ((t (:foreground "#95a99f"))))
+ (font-lock-constant-face ((t (:foreground "#95a99f"))))
+ (font-lock-type-face ((t (:foreground "#95a99f"))))
+ (font-lock-warning-face ((t (:foreground "#f43841"))))
+ (font-lock-reference-face ((t (:foreground "#95a99f"))))
+ (trailing-whitespace ((t (:foreground "#000" :background "#f43841"))))
+ (link ((t (:foreground "#96A6C8" :underline t))))
+
+ ;; Search
+ (isearch ((t (:foreground "#000" :background "#f5f5f5"))))
+ (isearch-lazy-highlight-face ((t (:foreground "#f4f4ff" :background "#5f627f"))))
+ (isearch-fail ((t (:foreground "#000" :background "#f43841"))))
+
+ ;; User interface
+ (fringe ((t (:background "#111" :foreground "#444"))))
+ (border ((t (:background "#111" :foreground "#444"))))
+ (mode-line ((t (:background "#453d41" :foreground "#fff"))))
+ (mode-line-buffer-id ((t (:background "#453d41" :foreground "#fff"))))
+ (mode-line-inactive ((t (:background "#453d41" :foreground "#999"))))
+ (minibuffer-prompt ((t (:foreground "#96A6C8"))))
+ (region ((t (:background "#484848"))))
+ (secondary-selection ((t (:background "#484951" :foreground "#F4F4FF"))))
+ (tooltip ((t (:background "#52494e" :foreground "#fff"))))
+
+ ;; Parenthesis matching
+ (show-paren-match-face ((t (:background "#52494e" :foreground "#f4f4ff"))))
+ (show-paren-mismatch-face ((t (:foreground "#f4f4ff" :background "#c73c3f"))))
+ ;; Line highlighting
+ (highlight ((t (:background "#282828" :foreground nil))))
+ (highlight-current-line-face ((t (:background "#282828" :foreground nil))))
+
+ ;; Calendar
+ (holiday-face ((t (:foreground "#f43841"))))
+
+ ;; Info
+ (info-xref ((t (:foreground "#96a6c8"))))
+ (info-visited ((t (:foreground "#9e95c7"))))
+
+ ;; AUCTeX
+ (font-latex-sectioning-5-face ((t (:foreground "#96a6c8" :bold t))))
+ (font-latex-bold-face ((t (:foreground "#95a99f" :bold t))))
+ (font-latex-italic-face ((t (:foreground "#95a99f" :italic t))))
+ (font-latex-math-face ((t (:foreground "#73c936"))))
+ (font-latex-string-face ((t (:foreground "#73c936"))))
+ (font-latex-warning-face ((t (:foreground "#f43841"))))
+ (font-latex-slide-title-face ((t (:foreground "#96a6c8"))))
+ )))
+
+(provide 'color-theme-gruber-darker)
diff --git a/emacs.d/color-theme-vibrant-ink.el b/emacs.d/color-theme-vibrant-ink.el
new file mode 100644
index 0000000..dee8c6a
--- /dev/null
+++ b/emacs.d/color-theme-vibrant-ink.el
@@ -0,0 +1,18 @@
+(require 'color-theme)
+
+;; vibrant-ink color theme
+(defun color-theme-vibrant-ink ()
+ (interactive)
+ (color-theme-install
+ '(color-theme-ryrobes
+ ((background-color . "#000000")
+ (background-mode . dark)
+ (border-color . "#000000")
+ (cursor-color . "#FFFFFF")
+ (foreground-color . "#FFFFFF")
+ (mouse-color . "#FFFFFF"))
+ (font-lock-comment-face ((t (:foreground "#9933CC" :italic t))))
+ (font-lock-keyword-face ((t (:foreground "#FF6600"))))
+ (font-lock-type-face ((t (:foreground "#FFCC00"))))
+ (font-lock-string-face ((t (:foreground "#66FF00")))))))
+(provide 'color-theme-vibrant-ink)
diff --git a/emacs.d/color-theme-weirdness.el b/emacs.d/color-theme-weirdness.el
new file mode 100644
index 0000000..a97cefc
--- /dev/null
+++ b/emacs.d/color-theme-weirdness.el
@@ -0,0 +1,37 @@
+(require 'color-theme)
+
+;; weirdness color-theme
+(defun color-theme-weirdness ()
+ (interactive)
+ (color-theme-install
+ '(color-theme-weirdness
+ ((background-color . "#000000")
+ (background-mode . dark)
+ (border-color . "#000000")
+ (cursor-color . "#FFFFFF")
+ (foreground-color . "#FFFFFF")
+ (mouse-color . "#000000"))
+ (org-level-1 ((t (:foreground "#5BFD5B" :weight normal))))
+ (org-level-2 ((t (:foreground "#379A37" :weight normal))))
+ (org-level-3 ((t (:foreground "#757575" :weight normal))))
+ (org-level-4 ((t (:foreground "#778899" :weight normal))))
+ (org-level-5 ((t (:foreground "#9898FF" :weight normal))))
+ (org-level-6 ((t (:foreground "#0000B0" :weight normal))))
+ (org-level-7 ((t (:foreground "#740091" :weight normal))))
+ (org-level-8 ((t (:foreground "#B275C1" :weight normal))))
+ (fringe ((t (:background "#000000"))))
+ (mode-line ((t (:foreground "#B3B3B3" :background "#43527A" :background "#000000" :box nil))))
+ (region ((t (:background "#3D3D3D"))))
+ (minibuffer-prompt ((t (:foreground "#72F3FF" :bold t))))
+ (flymake-warnline ((t (:background "#000060"))))
+ (flymake-errline ((t (:background "#600000"))))
+ (font-lock-builtin-face ((t (:foreground "#C436C4"))))
+ (font-lock-comment-face ((t (:foreground "#00AC00" :background "#004000" :bold t :box (:line-width 1 :color "#006000" :style nil)))))
+ (font-lock-comment-delimiter-face ((t (:inherit 'font-lock-comment-face))))
+ (font-lock-function-name-face ((t (:foreground "#0FFF28"))))
+ (font-lock-keyword-face ((t (:foreground "#4E61BB" :bold t))))
+ (font-lock-string-face ((t (:foreground "#E00900"))))
+ (font-lock-type-face ((t (:foreground "#8522DD"))))
+ (font-lock-variable-name-face ((t (:foreground "#18EFF2"))))
+ (font-lock-warning-face ((t (:foreground "#FF0000" :bold t)))))))
+(provide 'color-theme-weirdness)
diff --git a/emacs.d/color-theme.el b/emacs.d/color-theme.el
new file mode 100644
index 0000000..c92c1a5
--- /dev/null
+++ b/emacs.d/color-theme.el
@@ -0,0 +1,1668 @@
+;;; color-theme.el --- install color themes
+
+;; Copyright (C) 1999, 2000 Jonadab the Unsightly One <jonadab@bright.net>
+;; Copyright (C) 2000, 2001, 2002, 2003 Alex Schroeder <alex@gnu.org>
+;; Copyright (C) 2003, 2004, 2005, 2006 Xavier Maillard <zedek@gnu.org>
+
+;; Version: 6.6.0
+;; Keywords: faces
+;; Author: Jonadab the Unsightly One <jonadab@bright.net>
+;; Maintainer: Xavier Maillard <zedek@gnu.org>
+;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ColorTheme
+
+;; This file is not (YET) part of GNU Emacs.
+
+;; This 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 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 GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+;; MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Please read README and BUGS files for any relevant help.
+;; Contributors (not themers) should also read HACKING file.
+
+;;; Thanks
+
+;; Deepak Goel <deego@glue.umd.edu>
+;; S. Pokrovsky <pok@nbsp.nsk.su> for ideas and discussion.
+;; Gordon Messmer <gordon@dragonsdawn.net> for ideas and discussion.
+;; Sriram Karra <karra@cs.utah.edu> for the color-theme-submit stuff.
+;; Olgierd `Kingsajz' Ziolko <kingsajz@rpg.pl> for the spec-filter idea.
+;; Brian Palmer for color-theme-library ideas and code
+;; All the users that contributed their color themes.
+
+
+
+;;; Code:
+(eval-when-compile
+ (require 'easymenu)
+ (require 'reporter)
+ (require 'sendmail))
+
+(require 'cl); set-difference is a function...
+
+;; for custom-face-attributes-get or face-custom-attributes-get
+(require 'cus-face)
+(require 'wid-edit); for widget-apply stuff in cus-face.el
+
+(defconst color-theme-maintainer-address "zedek@gnu.org"
+ "Address used by `submit-color-theme'.")
+
+;; Emacs / XEmacs compatibility and workaround layer
+
+(cond ((and (facep 'tool-bar)
+ (not (facep 'toolbar)))
+ (put 'toolbar 'face-alias 'tool-bar))
+ ((and (facep 'toolbar)
+ (not (facep 'tool-bar)))
+ (put 'tool-bar 'face-alias 'toolbar)))
+
+(defvar color-theme-xemacs-p (and (featurep 'xemacs)
+ (string-match "XEmacs" emacs-version))
+ "Non-nil if running XEmacs.")
+
+;; Add this since it appears to miss in emacs-2x
+(or (fboundp 'replace-in-string)
+ (defun replace-in-string (target old new)
+ (replace-regexp-in-string old new target)))
+
+;; face-attr-construct has a problem in Emacs 20.7 and older when
+;; dealing with inverse-video faces. Here is a short test to check
+;; wether you are affected.
+
+;; (set-background-color "wheat")
+;; (set-foreground-color "black")
+;; (setq a (make-face 'a-face))
+;; (face-spec-set a '((t (:background "white" :foreground "black" :inverse-video t))))
+;; (face-attr-construct a)
+;; => (:background "black" :inverse-video t)
+
+;; The expected response is the original specification:
+;; => (:background "white" :foreground "black" :inverse-video t)
+
+;; That's why we depend on cus-face.el functionality.
+
+(cond ((fboundp 'custom-face-attributes-get)
+ (defun color-theme-face-attr-construct (face frame)
+ (if (atom face)
+ (custom-face-attributes-get face frame)
+ (if (and (consp face) (eq (car face) 'quote))
+ (custom-face-attributes-get (cadr face) frame)
+ (custom-face-attributes-get (car face) frame)))))
+ ((fboundp 'face-custom-attributes-get)
+ (defalias 'color-theme-face-attr-construct
+ 'face-custom-attributes-get))
+ (t
+ (defun color-theme-face-attr-construct (&rest ignore)
+ (error "Unable to construct face attributes"))))
+
+(defun color-theme-alist (plist)
+ "Transform PLIST into an alist if it is a plist and return it.
+If the first element of PLIST is a cons cell, we just return PLIST,
+assuming PLIST to be an alist. If the first element of plist is not a
+symbol, this is an error: We cannot distinguish a plist from an ordinary
+list, but a list that doesn't start with a symbol is certainly no plist
+and no alist.
+
+This is used to make sure `default-frame-alist' really is an alist and not
+a plist. In XEmacs, the alist is deprecated; a plist is used instead."
+ (cond ((consp (car plist))
+ plist)
+ ((not (symbolp (car plist)))
+ (error "Wrong type argument: plist, %S" plist))
+ ((featurep 'xemacs)
+ (plist-to-alist plist)))); XEmacs only
+
+;; Customization
+
+(defgroup color-theme nil
+ "Color Themes for Emacs.
+A color theme consists of frame parameter settings, variable settings,
+and face definitions."
+ :version "20.6"
+ :group 'faces)
+
+(defcustom color-theme-legal-frame-parameters "\\(color\\|mode\\)$"
+ "Regexp that matches frame parameter names.
+Only frame parameter names that match this regexp can be changed as part
+of a color theme."
+ :type '(choice (const :tag "Colors only" "\\(color\\|mode\\)$")
+ (const :tag "Colors, fonts, and size"
+ "\\(color\\|mode\\|font\\|height\\|width\\)$")
+ (regexp :tag "Custom regexp"))
+ :group 'color-theme
+ :link '(info-link "(elisp)Window Frame Parameters"))
+
+(defcustom color-theme-legal-variables "\\(color\\|face\\)$"
+ "Regexp that matches variable names.
+Only variables that match this regexp can be changed as part of a color
+theme. In addition to matching this name, the variables have to be user
+variables (see function `user-variable-p')."
+ :type 'regexp
+ :group 'color-theme)
+
+(defcustom color-theme-illegal-faces "^w3-"
+ "Regexp that matches face names forbidden in themes.
+The default setting \"^w3-\" excludes w3 faces since these
+are created dynamically."
+ :type 'regexp
+ :group 'color-theme
+ :link '(info-link "(elisp)Faces for Font Lock")
+ :link '(info-link "(elisp)Standard Faces"))
+
+(defcustom color-theme-illegal-default-attributes '(:family :height :width)
+ "A list of face properties to be ignored when installing faces.
+This prevents Emacs from doing terrible things to your display just because
+a theme author likes weird fonts."
+ :type '(repeat symbol)
+ :group 'color-theme)
+
+(defcustom color-theme-is-global t
+ "*Determines wether a color theme is installed on all frames or not.
+If non-nil, color themes will be installed for all frames.
+If nil, color themes will be installed for the selected frame only.
+
+A possible use for this variable is dynamic binding. Here is a larger
+example to put in your ~/.emacs; it will make the Blue Sea color theme
+the default used for the first frame, and it will create two additional
+frames with different color themes.
+
+setup:
+ \(require 'color-theme)
+ ;; set default color theme
+ \(color-theme-blue-sea)
+ ;; create some frames with different color themes
+ \(let ((color-theme-is-global nil))
+ \(select-frame (make-frame))
+ \(color-theme-gnome2)
+ \(select-frame (make-frame))
+ \(color-theme-standard))
+
+Please note that using XEmacs and and a nil value for
+color-theme-is-global will ignore any variable settings for the color
+theme, since XEmacs doesn't have frame-local variable bindings.
+
+Also note that using Emacs and a non-nil value for color-theme-is-global
+will install a new color theme for all frames. Using XEmacs and a
+non-nil value for color-theme-is-global will install a new color theme
+only on those frames that are not using a local color theme."
+ :type 'boolean
+ :group 'color-theme)
+
+(defcustom color-theme-is-cumulative t
+ "*Determines wether new color themes are installed on top of each other.
+If non-nil, installing a color theme will undo all settings made by
+previous color themes."
+ :type 'boolean
+ :group 'color-theme)
+
+(defcustom color-theme-directory nil
+ "Directory where we can find additionnal themes (personnal).
+Note that there is at least one directory shipped with the official
+color-theme distribution where all contributed themes are located.
+This official selection can't be changed with that variable.
+However, you still can decide to turn it on or off and thus,
+not be shown with all themes but yours."
+ :type '(repeat string)
+ :group 'color-theme)
+
+(defcustom color-theme-libraries (directory-files
+ (concat
+ (file-name-directory (locate-library "color-theme"))
+ "/themes") t "^color-theme")
+ "A list of files, which will be loaded in color-theme-initialize depending
+on `color-theme-load-all-themes' value.
+This allows a user to prune the default color-themes (which can take a while
+to load)."
+ :type '(repeat string)
+ :group 'color-theme)
+
+(defcustom color-theme-load-all-themes t
+ "When t, load all color-theme theme files
+as presented by `color-theme-libraries'. Else
+do not load any of this themes."
+ :type 'boolean
+ :group 'color-theme)
+
+(defcustom color-theme-mode-hook nil
+ "Hook for color-theme-mode."
+ :type 'hook
+ :group 'color-theme)
+
+(defvar color-theme-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map (kbd "RET") 'color-theme-install-at-point)
+ (define-key map (kbd "c") 'list-colors-display)
+ (define-key map (kbd "d") 'color-theme-describe)
+ (define-key map (kbd "f") 'list-faces-display)
+ (define-key map (kbd "i") 'color-theme-install-at-point)
+ (define-key map (kbd "l") 'color-theme-install-at-point-for-current-frame)
+ (define-key map (kbd "p") 'color-theme-print)
+ (define-key map (kbd "q") 'bury-buffer)
+ (define-key map (kbd "?") 'color-theme-describe)
+ (if color-theme-xemacs-p
+ (define-key map (kbd "<button2>") 'color-theme-install-at-mouse)
+ (define-key map (kbd "<mouse-2>") 'color-theme-install-at-mouse))
+ map)
+ "Mode map used for the buffer created by `color-theme-select'.")
+
+(defvar color-theme-initialized nil
+ "Internal variable determining whether color-theme-initialize has been invoked yet")
+
+(defvar color-theme-buffer-name "*Color Theme Selection*"
+ "Name of the color theme selection buffer.")
+
+(defvar color-theme-original-frame-alist nil
+ "nil until one of the color themes has been installed.")
+
+(defvar color-theme-history nil
+ "List of color-themes called, in reverse order")
+
+(defcustom color-theme-history-max-length nil
+ "Max length of history to maintain.
+Two other values are acceptable: t means no limit, and
+nil means that no history is maintained."
+ :type '(choice (const :tag "No history" nil)
+ (const :tag "Unlimited length" t)
+ integer)
+ :group 'color-theme)
+
+(defvar color-theme-counter 0
+ "Counter for every addition to `color-theme-history'.
+This counts how many themes were installed, regardless
+of `color-theme-history-max-length'.")
+
+(defvar color-theme-entry-path (cond
+ ;; Emacs 22.x and later
+ ((lookup-key global-map [menu-bar tools])
+ '("tools"))
+ ;; XEmacs
+ ((featurep 'xemacs)
+ (setq tool-entry '("Tools")))
+ ;; Emacs < 22
+ (t
+ '("Tools")))
+ "Menu tool entry path.")
+
+(defun color-theme-add-to-history (name)
+ "Add color-theme NAME to `color-theme-history'."
+ (setq color-theme-history
+ (cons (list name color-theme-is-cumulative)
+ color-theme-history)
+ color-theme-counter (+ 1 color-theme-counter))
+ ;; Truncate the list if necessary.
+ (when (and (integerp color-theme-history-max-length)
+ (>= (length color-theme-history)
+ color-theme-history-max-length))
+ (setcdr (nthcdr (1- color-theme-history-max-length)
+ color-theme-history)
+ nil)))
+
+;; (let ((l '(1 2 3 4 5)))
+;; (setcdr (nthcdr 2 l) nil)
+;; l)
+
+
+
+;; List of color themes used to create the *Color Theme Selection*
+;; buffer.
+
+(defvar color-themes
+ '((color-theme-aalto-dark "Aalto Dark" "Jari Aalto <jari.aalto@poboxes.com>")
+ (color-theme-aalto-light "Aalto Light" "Jari Aalto <jari.aalto@poboxes.com>")
+ (color-theme-aliceblue "Alice Blue" "Girish Bharadwaj <girishb@gbvsoft.com>")
+ (color-theme-andreas "Andreas" "Andreas Busch <Andreas.Busch@politics.ox.ac.uk>")
+ (color-theme-arjen "Arjen" "Arjen Wiersma <arjen@wiersma.org>")
+ (color-theme-beige-diff "Beige Diff" "Alex Schroeder <alex@gnu.org>" t)
+ (color-theme-bharadwaj "Bharadwaj" "Girish Bharadwaj <girishb@gbvsoft.com>")
+ (color-theme-bharadwaj-slate "Bharadwaj Slate" "Girish Bharadwaj <girishb@gbvsoft.com>")
+ (color-theme-billw "Billw" "Bill White <billw@wolfram.com>")
+ (color-theme-black-on-gray "BlackOnGray" "Sudhir Bhojwani <sbhojwani@altoweb.com>")
+ (color-theme-blippblopp "Blipp Blopp" "Thomas Sicheritz-Ponten<thomas@biopython.org>")
+ (color-theme-simple-1 "Black" "Jonadab <jonadab@bright.net>")
+ (color-theme-blue-erc "Blue ERC" "Alex Schroeder <alex@gnu.org>" t)
+ (color-theme-blue-gnus "Blue Gnus" "Alex Schroeder <alex@gnu.org>" t)
+ (color-theme-blue-mood "Blue Mood" "Nelson Loyola <nloyola@yahoo.com>")
+ (color-theme-blue-sea "Blue Sea" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-calm-forest "Calm Forest" "Artur Hefczyc <kobit@plusnet.pl>")
+ (color-theme-charcoal-black "Charcoal Black" "Lars Chr. Hausmann <jazz@zqz.dk>")
+ (color-theme-goldenrod "Cheap Goldenrod" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-clarity "Clarity and Beauty" "Richard Wellum <rwellum@cisco.com>")
+ (color-theme-classic "Classic" "Frederic Giroud <postcard@worldonline.fr>")
+ (color-theme-comidia "Comidia" "Marcelo Dias de Toledo <mtole@ig.com.br>")
+ (color-theme-jsc-dark "Cooper Dark" "John S Cooper <John.Cooper@eu.citrix.com>")
+ (color-theme-jsc-light "Cooper Light" "John S Cooper <John.Cooper@eu.citrix.com>")
+ (color-theme-jsc-light2 "Cooper Light 2" "John S Cooper <John.Cooper@eu.citrix.com>")
+ (color-theme-dark-blue "Dark Blue" "Chris McMahan <cmcmahan@one.net>")
+ (color-theme-dark-blue2 "Dark Blue 2" "Chris McMahan <cmcmahan@one.net>")
+ (color-theme-dark-green "Dark Green" "eddy_woody@hotmail.com")
+ (color-theme-dark-laptop "Dark Laptop" "Laurent Michel <ldm@cs.brown.edu>")
+ (color-theme-deep-blue "Deep Blue" "Tomas Cerha <cerha@brailcom.org>")
+ (color-theme-digital-ofs1 "Digital OFS1" "Gareth Owen <gowen@gwowen.freeserve.co.uk>")
+ (color-theme-euphoria "Euphoria" "oGLOWo@oGLOWo.cjb.net")
+ (color-theme-feng-shui "Feng Shui" "Walter Higgins <walterh@rocketmail.com>")
+ (color-theme-fischmeister "Fischmeister"
+ "Sebastian Fischmeister <sfischme@nexus.lzk.tuwien.ac.at>")
+ (color-theme-gnome "Gnome" "Jonadab <jonadab@bright.net>")
+ (color-theme-gnome2 "Gnome 2" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-gray1 "Gray1" "Paul Pulli <P.Pulli@motorola.com>")
+ (color-theme-gray30 "Gray30" "Girish Bharadwaj <girishb@gbvsoft.com>")
+ (color-theme-kingsajz "Green Kingsajz" "Olgierd `Kingsajz' Ziolko <kingsajz@rpg.pl>")
+ (color-theme-greiner "Greiner" "Kevin Greiner <kgreiner@mapquest.com>")
+ (color-theme-gtk-ide "GTK IDE" "Gordon Messmer <gordon@dragonsdawn.net>")
+ (color-theme-high-contrast "High Contrast" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-hober "Hober" "Edward O'Connor <ted@oconnor.cx>")
+ (color-theme-infodoc "Infodoc" "Frederic Giroud <postcard@worldonline.fr>")
+ (color-theme-jb-simple "JB Simple" "jeff@dvns.com")
+ (color-theme-jedit-grey "Jedit Grey" "Gordon Messmer <gordon@dragonsdawn.net>")
+ (color-theme-jonadabian "Jonadab" "Jonadab <jonadab@bright.net>")
+ (color-theme-jonadabian-slate "Jonadabian Slate" "Jonadab <jonadab@bright.net>")
+ (color-theme-katester "Katester" "Higgins_Walter@emc.com")
+ (color-theme-late-night "Late Night" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-lawrence "Lawrence" "lawrence mitchell <wence@gmx.li>")
+ (color-theme-lethe "Lethe" "Ivica Loncar <ivica.loncar@srk.fer.hr>")
+ (color-theme-ld-dark "Linh Dang Dark" "Linh Dang <linhd@nortelnetworks.com>")
+ (color-theme-marine "Marine" "Girish Bharadwaj <girishb@gbvsoft.com>")
+ (color-theme-matrix "Matrix" "Walter Higgins <walterh@rocketmail.com>")
+ (color-theme-marquardt "Marquardt" "Colin Marquardt <colin@marquardt-home.de>")
+ (color-theme-midnight "Midnight" "Gordon Messmer <gordon@dragonsdawn.net>")
+ (color-theme-mistyday "Misty Day" "Hari Kumar <Hari.Kumar@mtm.kuleuven.ac.be>")
+ (color-theme-montz "Montz" "Brady Montz <bradym@becomm.com>")
+ (color-theme-oswald "Oswald" "Tom Oswald <toswald@sharplabs.com>")
+ (color-theme-parus "Parus" "Jon K Hellan <hellan@acm.org>")
+ (color-theme-pierson "Pierson" "Dan L. Pierson <dan@sol.control.com>")
+ (color-theme-ramangalahy "Ramangalahy" "Solofo Ramangalahy <solofo@irisa.fr>")
+ (color-theme-raspopovic "Raspopovic" "Pedja Raspopovic <pedja@lsil.com>")
+ (color-theme-renegade "Renegade" "Dave Benjamin <ramen@ramenfest.com>")
+ (color-theme-resolve "Resolve" "Damien Elmes <resolve@repose.cx>")
+ (color-theme-retro-green "Retro Green" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-retro-orange "Retro Orange" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-robin-hood "Robin Hood" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-rotor "Rotor" "Jinwei Shen <shenjw@wam.umd.edu>")
+ (color-theme-ryerson "Ryerson" "Luis Fernandes <elf@ee.ryerson.ca>")
+ (color-theme-salmon-diff "Salmon Diff" "Alex Schroeder <alex@gnu.org>" t)
+ (color-theme-salmon-font-lock "Salmon Font-Lock" "Alex Schroeder <alex@gnu.org>" t)
+ (color-theme-scintilla "Scintilla" "Gordon Messmer <gordon@dragonsdawn.net>")
+ (color-theme-shaman "Shaman" "shaman@interdon.net")
+ (color-theme-sitaramv-nt "Sitaram NT"
+ "Sitaram Venkatraman <sitaramv@loc251.tandem.com>")
+ (color-theme-sitaramv-solaris "Sitaram Solaris"
+ "Sitaram Venkatraman <sitaramv@loc251.tandem.com>")
+ (color-theme-snow "Snow" "Nicolas Rist <Nicolas.Rist@alcatel.de>")
+ (color-theme-snowish "Snowish" "Girish Bharadwaj <girishb@gbvsoft.com>")
+ (color-theme-standard-ediff "Standard Ediff" "Emacs Team, added by Alex Schroeder <alex@gnu.org>" t)
+ (color-theme-standard "Standard Emacs 20" "Emacs Team, added by Alex Schroeder <alex@gnu.org>")
+ (color-theme-emacs-21 "Standard Emacs 21" "Emacs Team, added by Alex Schroeder <alex@gnu.org>")
+ (color-theme-emacs-nw "Standard Emacs 21 No Window" "Emacs Team, added by D. Goel <deego@gnufans.org>")
+ (color-theme-xemacs "Standard XEmacs" "XEmacs Team, added by Alex Schroeder <alex@gnu.org>")
+ (color-theme-subtle-blue "Subtle Blue" "Chris McMahan <cmcmahan@one.net>")
+ (color-theme-subtle-hacker "Subtle Hacker" "Colin Walters <levanti@verbum.org>")
+ (color-theme-taming-mr-arneson "Taming Mr Arneson" "Erik Arneson <erik@aarg.net>")
+ (color-theme-taylor "Taylor" "Art Taylor <reeses@hemisphere.org>")
+ (color-theme-tty-dark "TTY Dark" "O Polite <m2@plusseven.com>")
+ (color-theme-vim-colors "Vim Colors" "Michael Soulier <msoulier@biryani.nssg.mitel.com>")
+ (color-theme-whateveryouwant "Whateveryouwant" "Fabien Penso <penso@linuxfr.org>, color by Scott Jaderholm <scott@jaderholm.com>")
+ (color-theme-wheat "Wheat" "Alex Schroeder <alex@gnu.org>")
+ (color-theme-pok-wob "White On Black" "S. Pokrovsky <pok@nbsp.nsk.su>")
+ (color-theme-pok-wog "White On Grey" "S. Pokrovsky <pok@nbsp.nsk.su>")
+ (color-theme-word-perfect "WordPerfect" "Thomas Gehrlein <Thomas.Gehrlein@t-online.de>")
+ (color-theme-xp "XP" "Girish Bharadwaj <girishb@gbvsoft.com>"))
+ "List of color themes.
+
+Each THEME is itself a three element list (FUNC NAME MAINTAINER &optional LIBRARY).
+
+FUNC is a color theme function which does the setup. The function
+FUNC may call `color-theme-install'. The color theme function may be
+interactive.
+
+NAME is the name of the theme and MAINTAINER is the name and/or email of
+the maintainer of the theme.
+
+If LIBRARY is non-nil, the color theme will be considered a library and
+may not be shown in the default menu.
+
+If you defined your own color theme and want to add it to this list,
+use something like this:
+
+ (add-to-list 'color-themes '(color-theme-gnome2 \"Gnome2\" \"Alex\"))")
+
+;;; Functions
+
+(defun color-theme-backup-original-values ()
+ "Back up the original `default-frame-alist'.
+The values are stored in `color-theme-original-frame-alist' on
+startup."
+ (if (null color-theme-original-frame-alist)
+ (setq color-theme-original-frame-alist
+ (color-theme-filter (frame-parameters (selected-frame))
+ color-theme-legal-frame-parameters))))
+(add-hook 'after-init-hook 'color-theme-backup-original-values)
+
+;;;###autoload
+(defun color-theme-select (&optional arg)
+ "Displays a special buffer for selecting and installing a color theme.
+With optional prefix ARG, this buffer will include color theme libraries
+as well. A color theme library is in itself not complete, it must be
+used as part of another color theme to be useful. Thus, color theme
+libraries are mainly useful for color theme authors."
+ (interactive "P")
+ (unless color-theme-initialized (color-theme-initialize))
+ (switch-to-buffer (get-buffer-create color-theme-buffer-name))
+ (setq buffer-read-only nil)
+ (erase-buffer)
+ ;; recreate the snapshot if necessary
+ (when (or (not (assq 'color-theme-snapshot color-themes))
+ (not (commandp 'color-theme-snapshot)))
+ (fset 'color-theme-snapshot (color-theme-make-snapshot))
+ (setq color-themes (delq (assq 'color-theme-snapshot color-themes)
+ color-themes)
+ color-themes (delq (assq 'bury-buffer color-themes)
+ color-themes)
+ color-themes (append '((color-theme-snapshot
+ "[Reset]" "Undo changes, if possible.")
+ (bury-buffer
+ "[Quit]" "Bury this buffer."))
+ color-themes)))
+ (dolist (theme color-themes)
+ (let ((func (nth 0 theme))
+ (name (nth 1 theme))
+ (author (nth 2 theme))
+ (library (nth 3 theme))
+ (desc))
+ (when (or (not library) arg)
+ (setq desc (format "%-23s %s"
+ (if library (concat name " [lib]") name)
+ author))
+ (put-text-property 0 (length desc) 'color-theme func desc)
+ (put-text-property 0 (length name) 'face 'bold desc)
+ (put-text-property 0 (length name) 'mouse-face 'highlight desc)
+ (insert desc)
+ (newline))))
+ (goto-char (point-min))
+ (setq buffer-read-only t)
+ (set-buffer-modified-p nil)
+ (color-theme-mode))
+
+(when (require 'easymenu)
+ (easy-menu-add-item nil color-theme-entry-path "--")
+ (easy-menu-add-item nil color-theme-entry-path
+ ["Color Themes" color-theme-select t]))
+
+(defun color-theme-mode ()
+ "Major mode to select and install color themes.
+
+Use \\[color-theme-install-at-point] to install a color theme on all frames.
+Use \\[color-theme-install-at-point-for-current-frame] to install a color theme for the current frame only.
+
+The changes are applied on top of your current setup. This is a
+feature.
+
+Some of the themes should be considered extensions to the standard color
+theme: they modify only a limited number of faces and variables. To
+verify the final look of a color theme, install the standard color
+theme, then install the other color theme. This is a feature. It allows
+you to mix several color themes.
+
+Use \\[color-theme-describe] to read more about the color theme function at point.
+If you want to install the color theme permanently, put the call to the
+color theme function into your ~/.emacs:
+
+ \(require 'color-theme)
+ \(color-theme-gnome2)
+
+If you worry about the size of color-theme.el: You are right. Use
+\\[color-theme-print] to print the current color theme and save the resulting buffer
+as ~/.emacs-color-theme. Now you can install only this specific color
+theme in your .emacs:
+
+ \(load-file \"~/.emacs-color-theme\")
+ \(my-color-theme)
+
+The Emacs menu is not affected by color themes within Emacs. Depending
+on the toolkit you used to compile Emacs, you might have to set specific
+X ressources. See the info manual for more information. Here is an
+example ~/.Xdefaults fragment:
+
+ emacs*Background: DarkSlateGray
+ emacs*Foreground: wheat
+
+\\{color-theme-mode-map}
+
+The color themes are listed in `color-themes', which see."
+ (kill-all-local-variables)
+ (setq major-mode 'color-theme-mode)
+ (setq mode-name "Color Themes")
+ (use-local-map color-theme-mode-map)
+ (when (functionp 'goto-address); Emacs
+ (goto-address))
+ (run-hooks 'color-theme-mode-hook))
+
+;;; Commands in Color Theme Selection mode
+
+;;;###autoload
+(defun color-theme-describe ()
+ "Describe color theme listed at point.
+This shows the documentation of the value of text-property color-theme
+at point. The text-property color-theme should be a color theme
+function. See `color-themes'."
+ (interactive)
+ (describe-function (get-text-property (point) 'color-theme)))
+
+;;;###autoload
+(defun color-theme-install-at-mouse (event)
+ "Install color theme clicked upon using the mouse.
+First argument EVENT is used to set point. Then
+`color-theme-install-at-point' is called."
+ (interactive "e")
+ (save-excursion
+ (mouse-set-point event)
+ (color-theme-install-at-point)))
+
+;;;autoload
+(defun color-theme-install-at-point ()
+ "Install color theme at point.
+This calls the value of the text-property `color-theme' at point.
+The text-property `color-theme' should be a color theme function.
+See `color-themes'."
+ (interactive)
+ (let ((func (get-text-property (point) 'color-theme)))
+ ;; install theme
+ (if func
+ (funcall func))
+ ;; If goto-address is being used, remove all overlays in the current
+ ;; buffer and run it again. The face used for the mail addresses in
+ ;; the the color theme selection buffer is based on the variable
+ ;; goto-address-mail-face. Changes in that variable will not affect
+ ;; existing overlays, however, thereby confusing users.
+ (when (functionp 'goto-address); Emacs
+ (dolist (o (overlays-in (point-min) (point-max)))
+ (delete-overlay o))
+ (goto-address))))
+
+;;;###autoload
+(defun color-theme-install-at-point-for-current-frame ()
+ "Install color theme at point for current frame only.
+Binds `color-theme-is-global' to nil and calls
+`color-theme-install-at-point'."
+ (interactive)
+ (let ((color-theme-is-global nil))
+ (color-theme-install-at-point)))
+
+
+
+;; Taking a snapshot of the current color theme and pretty printing it.
+
+(defun color-theme-filter (old-list regexp &optional exclude)
+ "Filter OLD-LIST.
+The resulting list will be newly allocated and contains only elements
+with names matching REGEXP. OLD-LIST may be a list or an alist. If you
+want to filter a plist, use `color-theme-alist' to convert your plist to
+an alist, first.
+
+If the optional argument EXCLUDE is non-nil, then the sense is
+reversed: only non-matching elements will be retained."
+ (let (elem new-list)
+ (dolist (elem old-list)
+ (setq name (symbol-name (if (listp elem) (car elem) elem)))
+ (when (or (and (not exclude)
+ (string-match regexp name))
+ (and exclude
+ (not (string-match regexp name))))
+ ;; Now make sure that if elem is a cons cell, and the cdr of
+ ;; that cons cell is a string, then we need a *new* string in
+ ;; the new list. Having a new cons cell is of no use because
+ ;; modify-frame-parameters will modify this string, thus
+ ;; modifying our color theme functions!
+ (when (and (consp elem)
+ (stringp (cdr elem)))
+ (setq elem (cons (car elem)
+ (copy-sequence (cdr elem)))))
+ ;; Now store elem
+ (setq new-list (cons elem new-list))))
+ new-list))
+
+(defun color-theme-spec-filter (spec)
+ "Filter the attributes in SPEC.
+This makes sure that SPEC has the form ((t (PLIST ...))).
+Only properties not in `color-theme-illegal-default-attributes'
+are included in the SPEC returned."
+ (let ((props (cadar spec))
+ result prop val)
+ (while props
+ (setq prop (nth 0 props)
+ val (nth 1 props)
+ props (nthcdr 2 props))
+ (unless (memq prop color-theme-illegal-default-attributes)
+ (setq result (cons val (cons prop result)))))
+ `((t ,(nreverse result)))))
+
+;; (color-theme-spec-filter '((t (:background "blue3"))))
+;; (color-theme-spec-filter '((t (:stipple nil :background "Black" :foreground "SteelBlue" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width semi-condensed :family "misc-fixed"))))
+
+(defun color-theme-plist-delete (plist prop)
+ "Delete property PROP from property list PLIST by side effect.
+This modifies PLIST."
+ ;; deal with prop at the start
+ (while (eq (car plist) prop)
+ (setq plist (cddr plist)))
+ ;; deal with empty plist
+ (when plist
+ (let ((lastcell (cdr plist))
+ (l (cddr plist)))
+ (while l
+ (if (eq (car l) prop)
+ (progn
+ (setq l (cddr l))
+ (setcdr lastcell l))
+ (setq lastcell (cdr l)
+ l (cddr l))))))
+ plist)
+
+;; (color-theme-plist-delete '(a b c d e f g h) 'a)
+;; (color-theme-plist-delete '(a b c d e f g h) 'b)
+;; (color-theme-plist-delete '(a b c d e f g h) 'c)
+;; (color-theme-plist-delete '(a b c d e f g h) 'g)
+;; (color-theme-plist-delete '(a b c d c d e f g h) 'c)
+;; (color-theme-plist-delete '(a b c d e f c d g h) 'c)
+
+(if (or (featurep 'xemacs)
+ (< emacs-major-version 21))
+ (defalias 'color-theme-spec-compat 'identity)
+ (defun color-theme-spec-compat (spec)
+ "Filter the attributes in SPEC such that is is never invalid.
+Example: Eventhough :bold works in Emacs, it is not recognized by
+`customize-face' -- and then the face is uncustomizable. This
+function replaces a :bold attribute with the corresponding :weight
+attribute, if there is no :weight, or deletes it. This undoes the
+doings of `color-theme-spec-canonical-font', more or less."
+ (let ((props (cadar spec)))
+ (when (plist-member props :bold)
+ (setq props (color-theme-plist-delete props :bold))
+ (unless (plist-member props :weight)
+ (setq props (plist-put props :weight 'bold))))
+ (when (plist-member props :italic)
+ (setq props (color-theme-plist-delete props :italic))
+ (unless (plist-member props :slant)
+ (setq props (plist-put props :slant 'italic))))
+ `((t ,props)))))
+
+;; (color-theme-spec-compat '((t (:foreground "blue" :bold t))))
+;; (color-theme-spec-compat '((t (:bold t :foreground "blue" :weight extra-bold))))
+;; (color-theme-spec-compat '((t (:italic t :foreground "blue"))))
+;; (color-theme-spec-compat '((t (:slant oblique :italic t :foreground "blue"))))
+
+(defun color-theme-spec-canonical-font (atts)
+ "Add :bold and :italic attributes if necessary."
+ ;; add these to the front of atts -- this will keept the old value for
+ ;; customize-face in Emacs 21.
+ (when (and (memq (plist-get atts :weight)
+ '(ultra-bold extra-bold bold semi-bold))
+ (not (plist-get atts :bold)))
+ (setq atts (cons :bold (cons t atts))))
+ (when (and (not (memq (plist-get atts :slant)
+ '(normal nil)))
+ (not (plist-get atts :italic)))
+ (setq atts (cons :italic (cons t atts))))
+ atts)
+;; (color-theme-spec-canonical-font (color-theme-face-attr-construct 'bold (selected-frame)))
+;; (defface foo '((t (:weight extra-bold))) "foo")
+;; (color-theme-spec-canonical-font (color-theme-face-attr-construct 'foo (selected-frame)))
+;; (face-spec-set 'foo '((t (:weight extra-bold))) nil)
+;; (face-spec-set 'foo '((t (:bold t))) nil)
+;; (face-spec-set 'foo '((t (:bold t :weight extra-bold))) nil)
+
+;; Handle :height according to NEWS file for Emacs 21
+(defun color-theme-spec-resolve-height (old new)
+ "Return the new height given OLD and NEW height.
+OLD is the current setting, NEW is the setting inherited from."
+ (cond ((not old)
+ new)
+ ((integerp old)
+ old)
+ ((and (floatp old)
+ (integerp new))
+ (round (* old new)))
+ ((and (floatp old)
+ (floatp new))
+ (* old new))
+ ((and (functionp old)
+ (integerp new))
+ (round (funcall old new)))
+ ((and (functionp old)
+ (float new))
+ `(lambda (f) (* (funcall ,old f) ,new)))
+ ((and (functionp old)
+ (functionp new))
+ `(lambda (f) (* (funcall ,old (funcall ,new f)))))
+ (t
+ (error "Illegal :height attributes: %S or %S" old new))))
+;; (color-theme-spec-resolve-height 12 1.2)
+;; (color-theme-spec-resolve-height 1.2 1.2)
+;; (color-theme-spec-resolve-height 1.2 12)
+;; (color-theme-spec-resolve-height 1.2 'foo)
+;; (color-theme-spec-resolve-height (lambda (f) (* 2 f)) 5)
+;; (color-theme-spec-resolve-height (lambda (f) (* 2 f)) 2.0)
+;; the following lambda is the result from the above calculation
+;; (color-theme-spec-resolve-height (lambda (f) (* (funcall (lambda (f) (* 2 f)) f) 2.0)) 5)
+
+(defun color-theme-spec-resolve-inheritance (atts)
+ "Resolve all occurences of the :inherit attribute."
+ (let ((face (plist-get atts :inherit)))
+ ;; From the Emacs 21 NEWS file: "Attributes from inherited faces are
+ ;; merged into the face like an underlying face would be." --
+ ;; therefore properties of the inherited face only add missing
+ ;; attributes.
+ (when face
+ ;; remove :inherit face from atts -- this assumes only one
+ ;; :inherit attribute.
+ (setq atts (delq ':inherit (delq face atts)))
+ (let ((more-atts (color-theme-spec-resolve-inheritance
+ (color-theme-face-attr-construct
+ face (selected-frame))))
+ att val)
+ (while more-atts
+ (setq att (car more-atts)
+ val (cadr more-atts)
+ more-atts (cddr more-atts))
+ ;; Color-theme assumes that no value is ever 'unspecified.
+ (cond ((eq att ':height); cumulative effect!
+ (setq atts (plist-put atts
+ ':height
+ (color-theme-spec-resolve-height
+ (plist-get atts att)
+ val))))
+ ;; Default: Only put if it has not been specified before.
+ ((not (plist-get atts att))
+ (setq atts (cons att (cons val atts))))
+
+))))
+ atts))
+;; (color-theme-spec-resolve-inheritance '(:bold t))
+;; (color-theme-spec-resolve-inheritance '(:bold t :foreground "blue"))
+;; (color-theme-face-attr-construct 'font-lock-comment-face (selected-frame))
+;; (color-theme-spec-resolve-inheritance '(:bold t :inherit font-lock-comment-face))
+;; (color-theme-spec-resolve-inheritance '(:bold t :foreground "red" :inherit font-lock-comment-face))
+;; (color-theme-face-attr-construct 'Info-title-2-face (selected-frame))
+;; (color-theme-face-attr-construct 'Info-title-3-face (selected-frame))
+;; (color-theme-face-attr-construct 'Info-title-4-face (selected-frame))
+;; (color-theme-spec-resolve-inheritance '(:inherit Info-title-2-face))
+
+;; The :inverse-video attribute causes Emacs to swap foreground and
+;; background colors, XEmacs does not. Therefore, if anybody chooses
+;; the inverse-video attribute, we 1. swap the colors ourselves in Emacs
+;; and 2. we remove the inverse-video attribute in Emacs and XEmacs.
+;; Inverse-video is only useful on a monochrome tty.
+(defun color-theme-spec-maybe-invert (atts)
+ "Remove the :inverse-video attribute from ATTS.
+If ATTS contains :inverse-video t, remove it and swap foreground and
+background color. Return ATTS."
+ (let ((inv (plist-get atts ':inverse-video)))
+ (if inv
+ (let (result att)
+ (while atts
+ (setq att (car atts)
+ atts (cdr atts))
+ (cond ((and (eq att :foreground) (not color-theme-xemacs-p))
+ (setq result (cons :background result)))
+ ((and (eq att :background) (not color-theme-xemacs-p))
+ (setq result (cons :foreground result)))
+ ((eq att :inverse-video)
+ (setq atts (cdr atts))); this prevents using dolist
+ (t
+ (setq result (cons att result)))))
+ (nreverse result))
+ ;; else
+ atts)))
+;; (color-theme-spec-maybe-invert '(:bold t))
+;; (color-theme-spec-maybe-invert '(:foreground "blue"))
+;; (color-theme-spec-maybe-invert '(:background "red"))
+;; (color-theme-spec-maybe-invert '(:inverse-video t))
+;; (color-theme-spec-maybe-invert '(:inverse-video t :foreground "red"))
+;; (color-theme-spec-maybe-invert '(:inverse-video t :background "red"))
+;; (color-theme-spec-maybe-invert '(:inverse-video t :background "red" :foreground "blue" :bold t))
+;; (color-theme-spec-maybe-invert '(:inverse-video nil :background "red" :foreground "blue" :bold t))
+
+(defun color-theme-spec (face)
+ "Return a list for FACE which has the form (FACE SPEC).
+See `defface' for the format of SPEC. In this case we use only one
+DISPLAY, t, and determine ATTS using `color-theme-face-attr-construct'.
+If ATTS is nil, (nil) is used instead.
+
+If ATTS contains :inverse-video t, we remove it and swap foreground and
+background color using `color-theme-spec-maybe-invert'. We do this
+because :inverse-video is handled differently in Emacs and XEmacs. We
+will loose on a tty without colors, because in that situation,
+:inverse-video means something."
+ (let ((atts
+ (color-theme-spec-canonical-font
+ (color-theme-spec-maybe-invert
+ (color-theme-spec-resolve-inheritance
+ (color-theme-face-attr-construct face (selected-frame)))))))
+ (if atts
+ `(,face ((t ,atts)))
+ `(,face ((t (nil)))))))
+
+(defun color-theme-get-params ()
+ "Return a list of frame parameter settings usable in a color theme.
+Such an alist may be installed by `color-theme-install-frame-params'. The
+frame parameters returned must match `color-theme-legal-frame-parameters'."
+ (let ((params (color-theme-filter (frame-parameters (selected-frame))
+ color-theme-legal-frame-parameters)))
+ (sort params (lambda (a b) (string< (symbol-name (car a))
+ (symbol-name (car b)))))))
+
+(defun color-theme-get-vars ()
+ "Return a list of variable settings usable in a color theme.
+Such an alist may be installed by `color-theme-install-variables'.
+The variable names must match `color-theme-legal-variables', and the
+variable must be a user variable according to `user-variable-p'."
+ (let ((vars)
+ (val))
+ (mapatoms (lambda (v)
+ (and (boundp v)
+ (user-variable-p v)
+ (string-match color-theme-legal-variables
+ (symbol-name v))
+ (setq val (eval v))
+ (add-to-list 'vars (cons v val)))))
+ (sort vars (lambda (a b) (string< (car a) (car b))))))
+
+(defun color-theme-print-alist (alist)
+ "Print ALIST."
+ (insert "\n " (if alist "(" "nil"))
+ (dolist (elem alist)
+ (when (= (preceding-char) ?\))
+ (insert "\n "))
+ (prin1 elem (current-buffer)))
+ (when (= (preceding-char) ?\)) (insert ")")))
+
+(defun color-theme-get-faces ()
+ "Return a list of faces usable in a color theme.
+Such an alist may be installed by `color-theme-install-faces'. The
+faces returned must not match `color-theme-illegal-faces'."
+ (let ((faces (color-theme-filter (face-list) color-theme-illegal-faces t)))
+ ;; default face must come first according to comments in
+ ;; custom-save-faces, the rest is to be sorted by name
+ (cons 'default (sort (delq 'default faces) 'string-lessp))))
+
+(defun color-theme-get-face-definitions ()
+ "Return face settings usable in a color-theme."
+ (let ((faces (color-theme-get-faces)))
+ (mapcar 'color-theme-spec faces)))
+
+(defun color-theme-print-faces (faces)
+ "Print face settings for all faces returned by `color-theme-get-faces'."
+ (when faces
+ (insert "\n "))
+ (dolist (face faces)
+ (when (= (preceding-char) ?\))
+ (insert "\n "))
+ (prin1 face (current-buffer))))
+
+(defun color-theme-reset-faces ()
+ "Reset face settings for all faces returned by `color-theme-get-faces'."
+ (let ((faces (color-theme-get-faces))
+ (face) (spec) (entry)
+ (frame (if color-theme-is-global nil (selected-frame))))
+ (while faces
+ (setq entry (color-theme-spec (car faces)))
+ (setq face (nth 0 entry))
+ (setq spec '((t (nil))))
+ (setq faces (cdr faces))
+ (if (functionp 'face-spec-reset-face)
+ (face-spec-reset-face face frame)
+ (face-spec-set face spec frame)
+ (if color-theme-is-global
+ (put face 'face-defface-spec spec))))))
+
+(defun color-theme-print-theme (func doc params vars faces)
+ "Print a theme into the current buffer.
+FUNC is the function name, DOC the doc string, PARAMS the
+frame parameters, VARS the variable bindings, and FACES
+the list of faces and their specs."
+ (insert "(defun " (symbol-name func) " ()\n"
+ " \"" doc "\"\n"
+ " (interactive)\n"
+ " (color-theme-install\n"
+ " '(" (symbol-name func))
+ ;; alist of frame parameters
+ (color-theme-print-alist params)
+ ;; alist of variables
+ (color-theme-print-alist vars)
+ ;; remaining elements of snapshot: face specs
+ (color-theme-print-faces faces)
+ (insert ")))\n")
+ (insert "(add-to-list 'color-themes '(" (symbol-name func) " "
+ " \"THEME NAME\" \"YOUR NAME\"))")
+ (goto-char (point-min)))
+
+;;;###autoload
+(defun color-theme-print (&optional buf)
+ "Print the current color theme function.
+
+You can contribute this function to <URL:news:gnu.emacs.sources> or
+paste it into your .emacs file and call it. That should recreate all
+the settings necessary for your color theme.
+
+Example:
+
+ \(require 'color-theme)
+ \(defun my-color-theme ()
+ \"Color theme by Alex Schroeder, created 2000-05-17.\"
+ \(interactive)
+ \(color-theme-install
+ '(...
+ ...
+ ...)))
+ \(my-color-theme)
+
+If you want to use a specific color theme function, you can call the
+color theme function in your .emacs directly.
+
+Example:
+
+ \(require 'color-theme)
+ \(color-theme-gnome2)"
+ (interactive)
+ (message "Pretty printing current color theme function...")
+ (switch-to-buffer (if buf
+ buf
+ (get-buffer-create "*Color Theme*")))
+ (unless buf
+ (setq buffer-read-only nil)
+ (erase-buffer))
+ ;; insert defun
+ (insert "(eval-when-compile"
+ " (require 'color-theme))\n")
+ (color-theme-print-theme 'my-color-theme
+ (concat "Color theme by "
+ (if (string= "" user-full-name)
+ (user-login-name)
+ user-full-name)
+ ", created " (format-time-string "%Y-%m-%d") ".")
+ (color-theme-get-params)
+ (color-theme-get-vars)
+ (mapcar 'color-theme-spec (color-theme-get-faces)))
+ (unless buf
+ (emacs-lisp-mode))
+ (goto-char (point-min))
+ (message "Pretty printing current color theme function... done"))
+
+(defun color-theme-analyze-find-theme (code)
+ "Find the sexpr that calls `color-theme-install'."
+ (let (theme)
+ (while (and (not theme) code)
+ (when (eq (car code) 'color-theme-install)
+ (setq theme code))
+ (when (listp (car code))
+ (setq theme (color-theme-analyze-find-theme (car code))))
+ (setq code (cdr code)))
+ theme))
+
+;; (equal (color-theme-analyze-find-theme
+;; '(defun color-theme-blue-eshell ()
+;; "Color theme for eshell faces only."
+;; (color-theme-install
+;; '(color-theme-blue-eshell
+;; nil
+;; (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
+;; (eshell-ls-backup-face ((t (:foreground "Grey"))))))))
+;; '(color-theme-install
+;; (quote
+;; (color-theme-blue-eshell
+;; nil
+;; (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
+;; (eshell-ls-backup-face ((t (:foreground "Grey")))))))))
+
+(defun color-theme-analyze-add-face (a b regexp faces)
+ "If only one of A or B are in FACES, the other is added, and FACES is returned.
+If REGEXP is given, this is only done if faces contains a match for regexps."
+ (when (or (not regexp)
+ (catch 'found
+ (dolist (face faces)
+ (when (string-match regexp (symbol-name (car face)))
+ (throw 'found t)))))
+ (let ((face-a (assoc a faces))
+ (face-b (assoc b faces)))
+ (if (and face-a (not face-b))
+ (setq faces (cons (list b (nth 1 face-a))
+ faces))
+ (if (and (not face-a) face-b)
+ (setq faces (cons (list a (nth 1 face-b))
+ faces))))))
+ faces)
+
+;; (equal (color-theme-analyze-add-face
+;; 'blue 'violet nil
+;; '((blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t))))))
+;; '((violet ((t (:foreground "blue"))))
+;; (blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t))))))
+;; (equal (color-theme-analyze-add-face
+;; 'violet 'blue nil
+;; '((blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t))))))
+;; '((violet ((t (:foreground "blue"))))
+;; (blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t))))))
+;; (equal (color-theme-analyze-add-face
+;; 'violet 'blue "foo"
+;; '((blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t))))))
+;; '((blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t))))))
+;; (equal (color-theme-analyze-add-face
+;; 'violet 'blue "blue"
+;; '((blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t))))))
+;; '((violet ((t (:foreground "blue"))))
+;; (blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t))))))
+
+(defun color-theme-analyze-add-faces (faces)
+ "Add missing faces to FACES and return it."
+ ;; The most important thing is to add missing faces for the other
+ ;; editor. These are the most important faces to check. The
+ ;; following rules list two faces, A and B. If either of the two is
+ ;; part of the theme, the other must be, too. The optional third
+ ;; argument specifies a regexp. Only if an existing face name
+ ;; matches this regexp, is the rule applied.
+ (let ((rules '((font-lock-builtin-face font-lock-reference-face)
+ (font-lock-doc-face font-lock-doc-string-face)
+ (font-lock-constant-face font-lock-preprocessor-face)
+ ;; In Emacs 21 `modeline' is just an alias for
+ ;; `mode-line'. I recommend the use of
+ ;; `modeline' until further notice.
+ (modeline mode-line)
+ (modeline modeline-buffer-id)
+ (modeline modeline-mousable)
+ (modeline modeline-mousable-minor-mode)
+ (region primary-selection)
+ (region zmacs-region)
+ (font-lock-string-face dired-face-boring "^dired")
+ (font-lock-function-name-face dired-face-directory "^dired")
+ (default dired-face-executable "^dired")
+ (font-lock-warning-face dired-face-flagged "^dired")
+ (font-lock-warning-face dired-face-marked "^dired")
+ (default dired-face-permissions "^dired")
+ (default dired-face-setuid "^dired")
+ (default dired-face-socket "^dired")
+ (font-lock-keyword-face dired-face-symlink "^dired")
+ (tool-bar menu))))
+ (dolist (rule rules)
+ (setq faces (color-theme-analyze-add-face
+ (nth 0 rule) (nth 1 rule) (nth 2 rule) faces))))
+ ;; The `fringe' face defines what the left and right borders of the
+ ;; frame look like in Emacs 21. To give them default fore- and
+ ;; background colors, use (fringe ((t (nil)))) in your color theme.
+ ;; Usually it makes more sense to choose a color slightly lighter or
+ ;; darker from the default background.
+ (unless (assoc 'fringe faces)
+ (setq faces (cons '(fringe ((t (nil)))) faces)))
+ ;; The tool-bar should not be part of the frame-parameters, since it
+ ;; should not appear or disappear depending on the color theme. The
+ ;; apppearance of the toolbar, however, can be changed by the color
+ ;; theme. For Emacs 21, use the `tool-bar' face. The easiest way
+ ;; to do this is to give it the default fore- and background colors.
+ ;; This can be achieved using (tool-bar ((t (nil)))) in the theme.
+ ;; Usually it makes more sense, however, to provide the same colors
+ ;; as used in the `menu' face, and to specify a :box attribute. In
+ ;; order to alleviate potential Emacs/XEmacs incompatibilities,
+ ;; `toolbar' will be defined as an alias for `tool-bar' if it does
+ ;; not exist, and vice-versa. This is done eventhough the face
+ ;; `toolbar' seems to have no effect on XEmacs. If you look at
+ ;; XEmacs lisp/faces.el, however, you will find that it is in fact
+ ;; referenced for XPM stuff.
+ (unless (assoc 'tool-bar faces)
+ (setq faces (cons '(tool-bar ((t (nil)))) faces)))
+ ;; Move the default face back to the front, and sort the rest.
+ (unless (eq (caar faces) 'default)
+ (let ((face (assoc 'default faces)))
+ (setq faces (cons face
+ (sort (delete face faces)
+ (lambda (a b)
+ (string-lessp (car a) (car b))))))))
+ faces)
+
+(defun color-theme-analyze-remove-heights (faces)
+ "Remove :height property where it is an integer and return FACES."
+ ;; I don't recommend making font sizes part of a color theme. Most
+ ;; users would be surprised to see their font sizes change when they
+ ;; install a color-theme. Therefore, remove all :height attributes
+ ;; if the value is an integer. If the value is a float, this is ok
+ ;; -- the value is relative to the default height. One notable
+ ;; exceptions is for a color-theme created for visually impaired
+ ;; people. These *must* use a larger font in order to be usable.
+ (let (result)
+ (dolist (face faces)
+ (let ((props (cadar (nth 1 face))))
+ (if (and (plist-member props :height)
+ (integerp (plist-get props :height)))
+ (setq props (color-theme-plist-delete props :height)
+ result (cons (list (car face) `((t ,props)))
+ result))
+ (setq result (cons face result)))))
+ (nreverse result)))
+
+;; (equal (color-theme-analyze-remove-heights
+;; '((blue ((t (:foreground "blue" :height 2))))
+;; (bold ((t (:bold t :height 1.0))))))
+;; '((blue ((t (:foreground "blue"))))
+;; (bold ((t (:bold t :height 1.0))))))
+
+;;;###autoload
+(defun color-theme-analyze-defun ()
+ "Once you have a color-theme printed, check for missing faces.
+This is used by maintainers who receive a color-theme submission
+and want to make sure it follows the guidelines by the color-theme
+author."
+ ;; The support for :foreground and :background attributes works for
+ ;; Emacs 20 and 21 as well as for XEmacs. :inverse-video is taken
+ ;; care of while printing color themes.
+ (interactive)
+ ;; Parse the stuff and find the call to color-theme-install
+ (save-excursion
+ (save-restriction
+ (narrow-to-defun)
+ ;; define the function
+ (eval-defun nil)
+ (goto-char (point-min))
+ (let* ((code (read (current-buffer)))
+ (theme (color-theme-canonic
+ (eval
+ (cadr
+ (color-theme-analyze-find-theme
+ code)))))
+ (func (color-theme-function theme))
+ (doc (documentation func t))
+ (variables (color-theme-variables theme))
+ (faces (color-theme-faces theme))
+ (params (color-theme-frame-params theme)))
+ (setq faces (color-theme-analyze-remove-heights
+ (color-theme-analyze-add-faces faces)))
+ ;; Remove any variable bindings of faces that point to their
+ ;; symbol? Perhaps not, because another theme might want to
+ ;; change this, so it is important to be able to reset them.
+ ;; (let (result)
+ ;; (dolist (var variables)
+ ;; (unless (eq (car var) (cdr var))
+ ;; (setq result (cons var result))))
+ ;; (setq variables (nreverse result)))
+ ;; Now modify the theme directly.
+ (setq theme (color-theme-analyze-find-theme code))
+ (setcdr (cadadr theme) (list params variables faces))
+ (message "Pretty printing analysed color theme function...")
+ (with-current-buffer (get-buffer-create "*Color Theme*")
+ (setq buffer-read-only nil)
+ (erase-buffer)
+ ;; insert defun
+ (color-theme-print-theme func doc params variables faces)
+ (emacs-lisp-mode))
+ (message "Pretty printing analysed color theme function... done")
+ (ediff-buffers (current-buffer)
+ (get-buffer "*Color Theme*"))))))
+
+;;; Creating a snapshot of the current color theme
+
+(defun color-theme-snapshot nil)
+
+;;;###autoload
+(defun color-theme-make-snapshot ()
+ "Return the definition of the current color-theme.
+The function returned will recreate the color-theme in use at the moment."
+ (eval `(lambda ()
+ "The color theme in use when the selection buffer was created.
+\\[color-theme-select] creates the color theme selection buffer. At the
+same time, this snapshot is created as a very simple undo mechanism.
+The snapshot is created via `color-theme-snapshot'."
+ (interactive)
+ (color-theme-install
+ '(color-theme-snapshot
+ ;; alist of frame parameters
+ ,(color-theme-get-params)
+ ;; alist of variables
+ ,(color-theme-get-vars)
+ ;; remaining elements of snapshot: face specs
+ ,@(color-theme-get-face-definitions))))))
+
+
+
+;;; Handling the various parts of a color theme install
+
+(defvar color-theme-frame-param-frobbing-rules
+ '((foreground-color default foreground)
+ (background-color default background))
+ "List of rules to use when frobbing faces based on frame parameters.
+This is only necessary for XEmacs, because in Emacs 21 changing the
+frame paramters automatically affects the relevant faces.")
+
+;; fixme: silent the bytecompiler with set-face-property
+(defun color-theme-frob-faces (params)
+ "Change certain faces according to PARAMS.
+This uses `color-theme-frame-param-frobbing-rules'."
+ (dolist (rule color-theme-frame-param-frobbing-rules)
+ (let* ((param (nth 0 rule))
+ (face (nth 1 rule))
+ (prop (nth 2 rule))
+ (val (cdr (assq param params)))
+ (frame (if color-theme-is-global nil (selected-frame))))
+ (when val
+ (set-face-property face prop val frame)))))
+
+(defun color-theme-alist-reduce (old-list)
+ "Reduce OLD-LIST.
+The resulting list will be newly allocated and will not contain any elements
+with duplicate cars. This will speed the installation of new themes by
+only installing unique attributes."
+ (let (new-list)
+ (dolist (elem old-list)
+ (when (not (assq (car elem) new-list))
+ (setq new-list (cons elem new-list))))
+ new-list))
+
+(defun color-theme-install-frame-params (params)
+ "Change frame parameters using alist PARAMETERS.
+
+If `color-theme-is-global' is non-nil, all frames are modified using
+`modify-frame-parameters' and the PARAMETERS are prepended to
+`default-frame-alist'. The value of `initial-frame-alist' is not
+modified. If `color-theme-is-global' is nil, only the selected frame is
+modified. If `color-theme-is-cumulative' is nil, the frame parameters
+are restored from `color-theme-original-frame-alist'.
+
+If the current frame parameters have a parameter `minibuffer' with
+value `only', then the frame parameters are not installed, since this
+indicates a dedicated minibuffer frame.
+
+Called from `color-theme-install'."
+ (setq params (color-theme-filter
+ params color-theme-legal-frame-parameters))
+ ;; We have a new list in params now, therefore we may use
+ ;; destructive nconc.
+ (if color-theme-is-global
+ (let ((frames (frame-list)))
+ (if (or color-theme-is-cumulative
+ (null color-theme-original-frame-alist))
+ (setq default-frame-alist
+ (append params (color-theme-alist default-frame-alist))
+ minibuffer-frame-alist
+ (append params (color-theme-alist minibuffer-frame-alist)))
+ (setq default-frame-alist
+ (append params color-theme-original-frame-alist)
+ minibuffer-frame-alist
+ (append params (color-theme-alist minibuffer-frame-alist))))
+ (setq default-frame-alist
+ (color-theme-alist-reduce default-frame-alist)
+ minibuffer-frame-alist
+ (color-theme-alist-reduce minibuffer-frame-alist))
+ (dolist (frame frames)
+ (let ((params (if (eq 'only (cdr (assq 'minibuffer (frame-parameters frame))))
+ minibuffer-frame-alist
+ default-frame-alist)))
+ (condition-case var
+ (modify-frame-parameters frame params)
+ (error (message "Error using params %S: %S" params var))))))
+ (condition-case var
+ (modify-frame-parameters (selected-frame) params)
+ (error (message "Error using params %S: %S" params var))))
+ (when color-theme-xemacs-p
+ (color-theme-frob-faces params)))
+
+;; (setq default-frame-alist (cons '(height . 30) default-frame-alist))
+
+(defun color-theme-install-variables (vars)
+ "Change variables using alist VARS.
+All variables matching `color-theme-legal-variables' are set.
+
+If `color-theme-is-global' and `color-theme-xemacs-p' are nil, variables
+are made frame-local before setting them. Variables are set using `set'
+in either case. This may lead to problems if changing the variable
+requires the usage of the function specified with the :set tag in
+defcustom declarations.
+
+Called from `color-theme-install'."
+ (let ((vars (color-theme-filter vars color-theme-legal-variables)))
+ (dolist (var vars)
+ (if (or color-theme-is-global color-theme-xemacs-p)
+ (set (car var) (cdr var))
+ (make-variable-frame-local (car var))
+ (modify-frame-parameters (selected-frame) (list var))))))
+
+(defun color-theme-install-faces (faces)
+ "Change faces using FACES.
+
+Change faces for all frames and create any faces listed in FACES which
+don't exist. The modified faces will be marked as \"unchanged from
+its standard setting\". This is OK, since the changes made by
+installing a color theme should never by saved in .emacs by
+customization code.
+
+FACES should be a list where each entry has the form:
+
+ (FACE SPEC)
+
+See `defface' for the format of SPEC.
+
+If `color-theme-is-global' is non-nil, faces are modified on all frames
+using `face-spec-set'. If `color-theme-is-global' is nil, faces are
+only modified on the selected frame. Non-existing faces are created
+using `make-empty-face' in either case. If `color-theme-is-cumulative'
+is nil, all faces are reset before installing the new faces.
+
+Called from `color-theme-install'."
+ ;; clear all previous faces
+ (when (not color-theme-is-cumulative)
+ (color-theme-reset-faces))
+ ;; install new faces
+ (let ((faces (color-theme-filter faces color-theme-illegal-faces t))
+ (frame (if color-theme-is-global nil (selected-frame))))
+ (dolist (entry faces)
+ (let ((face (nth 0 entry))
+ (spec (nth 1 entry)))
+ (or (facep face)
+ (make-empty-face face))
+ ;; remove weird properties from the default face only
+ (when (eq face 'default)
+ (setq spec (color-theme-spec-filter spec)))
+ ;; Emacs/XEmacs customization issues: filter out :bold when
+ ;; the spec contains :weight, etc, such that the spec remains
+ ;; "valid" for custom.
+ (setq spec (color-theme-spec-compat spec))
+ ;; using a spec of ((t (nil))) to reset a face doesn't work
+ ;; in Emacs 21, we use the new function face-spec-reset-face
+ ;; instead
+ (if (and (functionp 'face-spec-reset-face)
+ (equal spec '((t (nil)))))
+ (face-spec-reset-face face frame)
+ (condition-case var
+ (progn
+ (face-spec-set face spec frame)
+ (if color-theme-is-global
+ (put face 'face-defface-spec spec)))
+ (error (message "Error using spec %S: %S" spec var))))))))
+
+;; `custom-set-faces' is unusable here because it doesn't allow to set
+;; the faces for one frame only.
+
+;; Emacs `face-spec-set': If FRAME is nil, the face is created and
+;; marked as a customized face. This is achieved by setting the
+;; `face-defface-spec' property. If we don't, new frames will not be
+;; created using the face we installed because `face-spec-set' is
+;; broken: If given a FRAME of nil, it will not set the default faces;
+;; instead it will walk through all the frames and set modify the faces.
+;; If we do set a property (`saved-face' or `face-defface-spec'),
+;; `make-frame' will correctly use the faces we defined with our color
+;; theme. If we used the property `saved-face',
+;; `customize-save-customized' will save all the faces installed as part
+;; of a color-theme in .emacs. That's why we use the
+;; `face-defface-spec' property.
+
+
+
+;;; Theme accessor functions, canonicalization, merging, comparing
+
+(defun color-theme-canonic (theme)
+ "Return the canonic form of THEME.
+This deals with all the backwards compatibility stuff."
+ (let (function frame-params variables faces)
+ (when (functionp (car theme))
+ (setq function (car theme)
+ theme (cdr theme)))
+ (setq frame-params (car theme)
+ theme (cdr theme))
+ ;; optional variable defintions (for backwards compatibility)
+ (when (listp (caar theme))
+ (setq variables (car theme)
+ theme (cdr theme)))
+ ;; face definitions
+ (setq faces theme)
+ (list function frame-params variables faces)))
+
+(defun color-theme-function (theme)
+ "Return function used to create THEME."
+ (nth 0 theme))
+
+(defun color-theme-frame-params (theme)
+ "Return frame-parameters defined by THEME."
+ (nth 1 theme))
+
+(defun color-theme-variables (theme)
+ "Return variables set by THEME."
+ (nth 2 theme))
+
+(defun color-theme-faces (theme)
+ "Return faces defined by THEME."
+ (nth 3 theme))
+
+(defun color-theme-merge-alists (&rest alists)
+ "Merges all the alist arguments into one alist.
+Only the first instance of every key will be part of the resulting
+alist. Membership will be tested using `assq'."
+ (let (result)
+ (dolist (l alists)
+ (dolist (entry l)
+ (unless (assq (car entry) result)
+ (setq result (cons entry result)))))
+ (nreverse result)))
+;; (color-theme-merge-alists '((a . 1) (b . 2)))
+;; (color-theme-merge-alists '((a . 1) (b . 2) (a . 3)))
+;; (color-theme-merge-alists '((a . 1) (b . 2)) '((a . 3)))
+;; (color-theme-merge-alists '((a . 1) (b . 2)) '((c . 3)))
+;; (color-theme-merge-alists '((a . 1) (b . 2)) '((c . 3) (d . 4)))
+;; (color-theme-merge-alists '((a . 1) (b . 2)) '((c . 3) (d . 4) (b . 5)))
+
+;;;###autoload
+(defun color-theme-compare (theme-a theme-b)
+ "Compare two color themes.
+This will print the differences between installing THEME-A and
+installing THEME-B. Note that the order is important: If a face is
+defined in THEME-A and not in THEME-B, then this will not show up as a
+difference, because there is no reset before installing THEME-B. If a
+face is defined in THEME-B and not in THEME-A, then this will show up as
+a difference."
+ (interactive
+ (list
+ (intern
+ (completing-read "Theme A: "
+ (mapcar (lambda (i) (list (symbol-name (car i))))
+ color-themes)
+ (lambda (i) (string-match "color-theme" (car i)))))
+ (intern
+ (completing-read "Theme B: "
+ (mapcar (lambda (i) (list (symbol-name (car i))))
+ color-themes)
+ (lambda (i) (string-match "color-theme" (car i)))))))
+ ;; install the themes in a new frame and get the definitions
+ (let ((color-theme-is-global nil))
+ (select-frame (make-frame))
+ (funcall theme-a)
+ (setq theme-a (list theme-a
+ (color-theme-get-params)
+ (color-theme-get-vars)
+ (color-theme-get-face-definitions)))
+ (funcall theme-b)
+ (setq theme-b (list theme-b
+ (color-theme-get-params)
+ (color-theme-get-vars)
+ (color-theme-get-face-definitions)))
+ (delete-frame))
+ (let ((params (set-difference
+ (color-theme-frame-params theme-b)
+ (color-theme-frame-params theme-a)
+ :test 'equal))
+ (vars (set-difference
+ (color-theme-variables theme-b)
+ (color-theme-variables theme-a)
+ :test 'equal))
+ (faces (set-difference
+ (color-theme-faces theme-b)
+ (color-theme-faces theme-a)
+ :test 'equal)))
+ (list 'diff
+ params
+ vars
+ faces)))
+
+
+
+;;; Installing a color theme
+;;;###autoload
+(defun color-theme-install (theme)
+ "Install a color theme defined by frame parameters, variables and faces.
+
+The theme is installed for all present and future frames; any missing
+faces are created. See `color-theme-install-faces'.
+
+THEME is a color theme definition. See below for more information.
+
+If you want to install a color theme from your .emacs, use the output
+generated by `color-theme-print'. This produces color theme function
+which you can copy to your .emacs.
+
+A color theme definition is a list:
+\([FUNCTION] FRAME-PARAMETERS VARIABLE-SETTINGS FACE-DEFINITIONS)
+
+FUNCTION is the color theme function which called `color-theme-install'.
+This is no longer used. There was a time when this package supported
+automatic factoring of color themes. This has been abandoned.
+
+FRAME-PARAMETERS is an alist of frame parameters. These are installed
+with `color-theme-install-frame-params'. These are installed last such
+that any changes to the default face can be changed by the frame
+parameters.
+
+VARIABLE-DEFINITIONS is an alist of variable settings. These are
+installed with `color-theme-install-variables'.
+
+FACE-DEFINITIONS is an alist of face definitions. These are installed
+with `color-theme-install-faces'.
+
+If `color-theme-is-cumulative' is nil, a color theme will undo face and
+frame-parameter settings of previous color themes."
+ (setq theme (color-theme-canonic theme))
+ (color-theme-install-variables (color-theme-variables theme))
+ (color-theme-install-faces (color-theme-faces theme))
+ ;; frame parameters override faces
+ (color-theme-install-frame-params (color-theme-frame-params theme))
+ (when color-theme-history-max-length
+ (color-theme-add-to-history
+ (car theme))))
+
+
+
+;; Sharing your stuff
+;;;###autoload
+(defun color-theme-submit ()
+ "Submit your color-theme to the maintainer."
+ (interactive)
+ (require 'reporter)
+ (let ((reporter-eval-buffer (current-buffer))
+ final-resting-place
+ after-sep-pos
+ (reporter-status-message "Formatting buffer...")
+ (reporter-status-count 0)
+ (problem "Yet another color-theme")
+ (agent (reporter-compose-outgoing))
+ (mailbuf (current-buffer))
+ hookvar)
+ ;; do the work
+ (require 'sendmail)
+ ;; If mailbuf did not get made visible before, make it visible now.
+ (let (same-window-buffer-names same-window-regexps)
+ (pop-to-buffer mailbuf)
+ ;; Just in case the original buffer is not visible now, bring it
+ ;; back somewhere
+ (and pop-up-windows (display-buffer reporter-eval-buffer)))
+ (goto-char (point-min))
+ (mail-position-on-field "to")
+ (insert color-theme-maintainer-address)
+ (mail-position-on-field "subject")
+ (insert problem)
+ ;; move point to the body of the message
+ (mail-text)
+ (setq after-sep-pos (point))
+ (unwind-protect
+ (progn
+ (setq final-resting-place (point-marker))
+ (goto-char final-resting-place))
+ (color-theme-print (current-buffer))
+ (goto-char final-resting-place)
+ (insert "\n\n")
+ (goto-char final-resting-place)
+ (insert "Hello there!\n\nHere's my color theme named: ")
+ (set-marker final-resting-place nil))
+ ;; compose the minibuf message and display this.
+ (let* ((sendkey-whereis (where-is-internal
+ (get agent 'sendfunc) nil t))
+ (abortkey-whereis (where-is-internal
+ (get agent 'abortfunc) nil t))
+ (sendkey (if sendkey-whereis
+ (key-description sendkey-whereis)
+ "C-c C-c")); TBD: BOGUS hardcode
+ (abortkey (if abortkey-whereis
+ (key-description abortkey-whereis)
+ "M-x kill-buffer"))); TBD: BOGUS hardcode
+ (message "Enter a message and type %s to send or %s to abort."
+ sendkey abortkey))))
+
+
+
+;; Use this to define themes
+(defmacro define-color-theme (name author description &rest forms)
+ (let ((n name))
+ `(progn
+ (add-to-list 'color-themes
+ (list ',n
+ (upcase-initials
+ (replace-in-string
+ (replace-in-string
+ (symbol-name ',n) "^color-theme-" "") "-" " "))
+ ,author))
+ (defun ,n ()
+ ,description
+ (interactive)
+ ,@forms))))
+
+
+;;; FIXME: is this useful ??
+;;;###autoload
+(defun color-theme-initialize ()
+ "Initialize the color theme package by loading color-theme-libraries."
+ (interactive)
+
+ (cond ((and (not color-theme-load-all-themes)
+ color-theme-directory)
+ (setq color-theme-libraries
+ (directory-files color-theme-directory t "^color-theme")))
+ (color-theme-directory
+ (push (cdr (directory-files color-theme-directory t "^color-theme"))
+ color-theme-libraries)))
+ (dolist (library color-theme-libraries)
+ (load library)))
+
+(when nil
+ (setq color-theme-directory "themes/"
+ color-theme-load-all-themes nil)
+ (color-theme-initialize)
+)
+;; TODO: I don't like all those function names cluttering up my namespace.
+;; Instead, a hashtable for the color-themes should be created. Now that
+;; define-color-theme is around, it should be easy to change in just the
+;; one place.
+
+
+(provide 'color-theme)
+
+;;; color-theme.el ends here
diff --git a/emacs.d/csharp-mode.el b/emacs.d/csharp-mode.el
new file mode 100644
index 0000000..9cd7914
--- /dev/null
+++ b/emacs.d/csharp-mode.el
@@ -0,0 +1,1977 @@
+;;; csharp-mode.el --- C# mode derived mode
+
+;; Author: Dylan R. E. Moonfire
+;; Maintainer: Dylan R. E. Moonfire <contact@mfgames.com>
+;; Created: Feburary 2005
+;; Modified: February 2010
+;; Version: 0.7.4 - Dino Chiesa <dpchiesa@hotmail.com>
+;; Keywords: c# languages oop mode
+
+;; 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 of the License, 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., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+;;
+;; This is a separate mode to implement the C# constructs and
+;; font-locking. It is based on the java-mode example from cc-mode.
+;;
+;; csharp-mode requires CC Mode 5.30 or later. It works with
+;; cc-mode 5.31.3, which is current at this time.
+;;
+;; Features:
+;;
+;; - font-lock and indent of C# syntax including:
+;; all c# keywords and major syntax
+;; attributes that decorate methods, classes, fields, properties
+;; enum types
+;; #if/#endif #region/#endregion
+;; instance initializers
+;; anonymous functions and methods
+;; verbatim literal strings (those that begin with @)
+;; generics
+;;
+;; - automagic code-doc generation when you type three slashes.
+;;
+;; - intelligent inserttion of matched pairs of curly braces.
+;;
+;; - sets the compiler regex for next-error, for csc.exe output.
+;;
+;;
+
+
+;;; To use:
+;;
+;; put this in your .emacs:
+;;
+;; (autoload 'csharp-mode "csharp-mode" "Major mode for editing C# code." t)
+;;
+;; or:
+;;
+;; (require 'csharp-mode)
+;;
+;;
+;; AND:
+;;
+;; (setq auto-mode-alist
+;; (append '(("\\.cs$" . csharp-mode)) auto-mode-alist))
+;; (defun my-csharp-mode-fn ()
+;; "function that runs when csharp-mode is initialized for a buffer."
+;; ...insert your code here...
+;; ...most commonly, your custom key bindings ...
+;; )
+;; (add-hook 'csharp-mode-hook 'my-csharp-mode-fn t)
+;;
+;;
+
+
+;;; Bugs:
+;;
+;; Namespaces in the using statements are not fontified. Should do in
+;; c-basic-matchers-before or c-basic-matchers-after.
+;;
+;; Method names with a preceding attribute are not fontified.
+;;
+;; Field/Prop names inside object initializers are fontified only
+;; if the null constructor is used, with no parens.
+;;
+;; This code doesn't seem to work when you compile it, then
+;; load/require in the emacs file. You will get an error (error
+;; "`c-lang-defconst' must be used in a file") which happens because
+;; cc-mode doesn't think it is in a buffer while loading directly
+;; from the init. However, if you call it based on a file extension,
+;; it works properly. Interestingly enough, this doesn't happen if
+;; you don't byte-compile cc-mode.
+;;
+;;
+;;
+;; Todo:
+;;
+;; Get csharp-mode.el accepted as part of the emacs standard distribution.
+;; Must contact monnier at iro.umontreal.ca to make this happen.
+;;
+;;
+;;
+;; Acknowledgements:
+;;
+;; Thanks to Alan Mackenzie and Stefan Monnier for answering questions
+;; and making suggestions.
+;;
+;;
+
+;;; Versions:
+;;
+;; 0.1.0 - Initial release.
+;; 0.2.0 - Fixed the identification on the "enum" keyword.
+;; - Fixed the font-lock on the "base" keyword
+;; 0.3.0 - Added a regex to fontify attributes. It isn't the
+;; the best method, but it handles single-like attributes
+;; well.
+;; - Got "super" not to fontify as a keyword.
+;; - Got extending classes and interfaces to fontify as something.
+;; 0.4.0 - Removed the attribute matching because it broke more than
+;; it fixed.
+;; - Corrected a bug with namespace not being properly identified
+;; and treating the class level as an inner object, which screwed
+;; up formatting.
+;; - Added "partial" to the keywords.
+;; 0.5.0 - Found bugs with compiled cc-mode and loading from init files.
+;; - Updated the eval-when-compile to code to let the mode be
+;; compiled.
+;; 0.6.0 - Added the c-filter-ops patch for 5.31.1 which made that
+;; function in cc-langs.el unavailable.
+;; - Added a csharp-lineup-region for indention #region and
+;; #endregion block differently.
+;; 0.7.0 - Added autoload so update-directory-autoloads works
+;; (Thank you, Nikolaj Schumacher)
+;; - Fontified the entire #region and #endregion lines.
+;; - Initial work to get get, set, add, remove font-locked.
+;; 0.7.1 - Added option to indent #if/endif with code
+;; - Fixed c-opt-cpp-prefix defn (it must not include the BOL
+;; char (^).
+;; - proper fontification and indent of classes that inherit
+;; (previously the colon was confusing the parser)
+;; - reclassified namespace as a block beginner
+;; - removed $ as a legal symbol char - not legal in C#.
+;; - added struct to c-class-decl-kwds so indent is correct
+;; within a struct.
+;; 0.7.2 - Added automatic codedoc insertion.
+;; 0.7.3 - Instance initializers (new Type { ... } ) and
+;; (new Type() { ...} ) are now indented properly.
+;; - proper fontification and indent of enums as brace-list-*,
+;; including special treatment for enums that explicitly
+;; inherit from an int type. Previously the colon was
+;; confusing the parser.
+;; - proper fontification of verbatim literal strings,
+;; including those that end in slash. This edge case was not
+;; handled at all before; it is now handled correctly.
+;; - code cleanup and organization; removed the linefeed.
+;; - intelligent curly-brace insertion
+;; 0.7.4 - added a C# style
+;; - using is now a keyword and gets fontified
+;; - fixed a bug that had crept into the codedoc insertion
+;;
+
+
+(require 'cc-mode)
+
+(message (concat "Loading " load-file-name))
+
+
+;; ==================================================================
+;; c# upfront stuff
+;; ==================================================================
+
+;; This is a copy of the function in cc-mode which is used to handle
+;; the eval-when-compile which is needed during other times.
+(defun c-filter-ops (ops opgroup-filter op-filter &optional xlate)
+ ;; See cc-langs.el, a direct copy.
+ (unless (listp (car-safe ops))
+ (setq ops (list ops)))
+ (cond ((eq opgroup-filter t)
+ (setq opgroup-filter (lambda (opgroup) t)))
+ ((not (functionp opgroup-filter))
+ (setq opgroup-filter `(lambda (opgroup)
+ (memq opgroup ',opgroup-filter)))))
+ (cond ((eq op-filter t)
+ (setq op-filter (lambda (op) t)))
+ ((stringp op-filter)
+ (setq op-filter `(lambda (op)
+ (string-match ,op-filter op)))))
+ (unless xlate
+ (setq xlate 'identity))
+ (c-with-syntax-table (c-lang-const c-mode-syntax-table)
+ (delete-duplicates
+ (mapcan (lambda (opgroup)
+ (when (if (symbolp (car opgroup))
+ (when (funcall opgroup-filter (car opgroup))
+ (setq opgroup (cdr opgroup))
+ t)
+ t)
+ (mapcan (lambda (op)
+ (when (funcall op-filter op)
+ (let ((res (funcall xlate op)))
+ (if (listp res) res (list res)))))
+ opgroup)))
+ ops)
+ :test 'equal)))
+
+
+
+;; These are only required at compile time to get the sources for the
+;; language constants. (The cc-fonts require and the font-lock
+;; related constants could additionally be put inside an
+;; (eval-after-load "font-lock" ...) but then some trickery is
+;; necessary to get them compiled.)
+(eval-when-compile
+ (let ((load-path
+ (if (and (boundp 'byte-compile-dest-file)
+ (stringp byte-compile-dest-file))
+ (cons (file-name-directory byte-compile-dest-file) load-path)
+ load-path)))
+ (load "cc-mode" nil t)
+ (load "cc-fonts" nil t)
+ (load "cc-langs" nil t)))
+
+(eval-and-compile
+ ;; Make our mode known to the language constant system. Use Java
+ ;; mode as the fallback for the constants we don't change here.
+ ;; This needs to be done also at compile time since the language
+ ;; constants are evaluated then.
+ (c-add-language 'csharp-mode 'java-mode))
+
+;; ==================================================================
+;; end of c# upfront stuff
+;; ==================================================================
+
+
+
+
+
+;; ==================================================================
+;; csharp-mode utility and feature defuns
+;; ==================================================================
+
+;; Indention: csharp-mode follows normal indention rules except for
+;; when indenting the #region and #endregion blocks. This function
+;; defines a custom indention to indent the #region blocks properly
+;;
+
+(defun csharp-lineup-region (langelem)
+ "Indent all #region and #endregion blocks inline with code while
+retaining normal column-zero indention for #if and the other
+processing blocks.
+
+To use this indenting just put the following in your emacs file:
+ (c-set-offset 'cpp-macro 'csharp-lineup-region)
+
+An alternative is to use `csharp-lineup-if-and-region'.
+"
+
+ (save-excursion
+ (back-to-indentation)
+ (if (re-search-forward "#\\(end\\)?region" (c-point 'eol) [0]) 0 [0])))
+
+
+
+(defun csharp-lineup-if-and-region (langelem)
+
+"Indent all #region/endregion blocks and #if/endif blocks inline
+with code while retaining normal column-zero indention for any
+other processing blocks.
+
+To use this indenting just put the following in your emacs file:
+ (c-set-offset 'cpp-macro 'csharp-lineup-if-and-region)
+
+Another option is to use `csharp-lineup-region'.
+
+"
+ (save-excursion
+ (back-to-indentation)
+ (if (re-search-forward "#\\(\\(end\\)?\\(if\\|region\\)\\|else\\)" (c-point 'eol) [0]) 0 [0])))
+
+
+
+
+
+(defun csharp-insert-open-brace ()
+ "Intelligently insert a pair of curly braces. This fn is most
+often bound to the open-curly brace, with
+
+ (local-set-key (kbd \"{\") 'csharp-insert-open-brace)
+
+The default binding for an open curly brace in cc-modes is often
+`c-electric-brace' or `skeleton-pair-insert-maybe'. The former
+can be configured to insert newlines around braces in various
+syntactic positions. The latter inserts a pair of braces and
+then does not insert a newline, and does not indent.
+
+This fn provides another option, with some additional
+intelligence for csharp-mode. When you type an open curly, the
+appropriate pair of braces appears, with spacing and indent set
+in a context-sensitive manner.
+
+Within a string literal, you just get a pair of braces, and point
+is set between them. Following an equals sign, you get a pair of
+braces, with a semincolon appended. Otherwise, you
+get the open brace on a new line, with the closing brace on the
+line following.
+
+There may be another way to get this to happen appropriately just within emacs,
+but I could not figure out how to do it. So I wrote this alternative.
+"
+ (interactive)
+ (let
+ (tpoint
+ (in-string (string= (csharp-in-literal) "string"))
+ (preceding3
+ (save-excursion
+ (and
+ (skip-chars-backward " ")
+ (> (- (point) 2) (point-min))
+ (buffer-substring-no-properties (point) (- (point) 3)))))
+ (one-word-back
+ (save-excursion
+ (backward-word 2)
+ (thing-at-point 'word))))
+
+ (cond
+
+ ;; Case 1: inside a string literal?
+ ;; --------------------------------------------
+ ;; If so, then just insert a pair of braces and put the point
+ ;; between them. The most common case is a format string for
+ ;; String.Format() or Console.WriteLine().
+ (in-string
+ (self-insert-command 1)
+ (insert "}")
+ (backward-char))
+
+ ;; Case 2: the open brace starts an array initializer.
+ ;; --------------------------------------------
+ ;; When the last non-space was an equals sign or square brackets,
+ ;; then it's an initializer.
+ ((save-excursion
+ (backward-sexp)
+ (looking-at "\\(\\w+\\b *=\\|[[]]+\\)"))
+ (self-insert-command 1)
+ (insert " };")
+ (backward-char 3))
+
+ ;; Case 3: the open brace starts an instance initializer
+ ;; --------------------------------------------
+ ;; If one-word-back was "new", then it's an object initializer.
+ ((string= one-word-back "new")
+ (save-excursion
+ (message "object initializer")
+ (setq tpoint (point)) ;; prepare to indent-region later
+ (newline)
+ (self-insert-command 1)
+ (newline-and-indent)
+ (newline)
+ (insert "};")
+ (c-indent-region tpoint (point))
+ (previous-line)
+ (indent-according-to-mode)
+ (end-of-line)
+ (setq tpoint (point)))
+ (goto-char tpoint))
+
+ ;; Case 4: a lambda initialier.
+ ;; --------------------------------------------
+ ;; If the open curly follows =>, then it's a lambda initializer.
+ ((string= (substring preceding3 -2) "=>")
+ (message "lambda init")
+ (self-insert-command 1)
+ (insert " }")
+ (backward-char 2))
+
+ ;; else, it's a new scope. (if, while, class, etc)
+ (t
+ (save-excursion
+ (message "new scope")
+ (set-mark (point)) ;; prepare to indent-region later
+ ;; check if the prior sexp is on the same line
+ (if (save-excursion
+ (let ((curline (line-number-at-pos))
+ (aftline (progn
+ (backward-sexp)
+ (line-number-at-pos))))
+ (= curline aftline)))
+ (newline-and-indent))
+ (self-insert-command 1)
+ (c-indent-line-or-region)
+ (end-of-line)
+ (newline)
+ (insert "}")
+ ;;(c-indent-command) ;; not sure of the difference here
+ (c-indent-line-or-region)
+ (previous-line)
+ (end-of-line)
+ (newline-and-indent)
+ ;; point ends up on an empty line, within the braces, properly indented
+ (setq tpoint (point)))
+
+ (goto-char tpoint)))))
+
+
+
+
+;; ==================================================================
+;; end of csharp-mode utility and feature defuns
+;; ==================================================================
+
+
+
+
+
+
+;; ==================================================================
+;; c# values for "language constants" defined in cc-langs.el
+;; ==================================================================
+
+
+;; Java uses a series of regexes to change the font-lock for class
+;; references. The problem comes in because Java uses Pascal (leading
+;; space in names, SomeClass) for class and package names, but
+;; Camel-casing (initial lowercase, upper case in words,
+;; i.e. someVariable) for variables. The notation suggested by EMCA for C# is
+;; to use Pascal notation for everything, except inner variables. So,
+;; the Java regex and formatting produces very wrong results in C#.
+;;(error (byte-compile-dest-file))
+;;(error (c-get-current-file))
+(c-lang-defconst c-opt-after-id-concat-key
+ csharp (if (c-lang-const c-opt-identifier-concat-key)
+ (c-lang-const c-symbol-start)))
+
+(c-lang-defconst c-basic-matchers-before
+ csharp `(
+ ;;;; Font-lock the attributes by searching for the
+ ;;;; appropriate regex and marking it as TODO.
+ ;;,`(,(concat "\\(" csharp-attribute-regex "\\)")
+ ;; 0 font-lock-function-name-face)
+
+ ;; Put a warning face on the opener of unclosed strings that
+ ;; can't span lines. Later font
+ ;; lock packages have a `font-lock-syntactic-face-function' for
+ ;; this, but it doesn't give the control we want since any
+ ;; fontification done inside the function will be
+ ;; unconditionally overridden.
+ ,(c-make-font-lock-search-function
+ ;; Match a char before the string starter to make
+ ;; `c-skip-comments-and-strings' work correctly.
+ (concat ".\\(" c-string-limit-regexp "\\)")
+ '((c-font-lock-invalid-string)))
+
+ ;; Fontify keyword constants.
+ ,@(when (c-lang-const c-constant-kwds)
+ (let ((re (c-make-keywords-re nil
+ (c-lang-const c-constant-kwds))))
+ `((eval . (list ,(concat "\\<\\(" re "\\)\\>")
+ 1 c-constant-face-name)))))
+
+ ;; Fontify all keywords except the primitive types.
+ ,`(,(concat "\\<" (c-lang-const c-regular-keywords-regexp))
+ 1 font-lock-keyword-face)
+
+ ;; Fontify leading identifiers in fully qualified names like
+ ;; "Foo.Bar".
+ ,@(when (c-lang-const c-opt-identifier-concat-key)
+ `((,(byte-compile
+ `(lambda (limit)
+ (while (re-search-forward
+ ,(concat "\\(\\<" ; 1
+ "\\(" (c-lang-const c-symbol-key)
+ "\\)" ; 2
+ "[ \t\n\r\f\v]*"
+ (c-lang-const
+ c-opt-identifier-concat-key)
+ "[ \t\n\r\f\v]*"
+ "\\)"
+ "\\("
+ (c-lang-const
+ c-opt-after-id-concat-key)
+ "\\)")
+ limit t)
+ (unless (progn
+ (goto-char (match-beginning 0))
+ (c-skip-comments-and-strings limit))
+ (or (get-text-property (match-beginning 2) 'face)
+ (c-put-font-lock-face (match-beginning 2)
+ (match-end 2)
+ c-reference-face-name))
+ (goto-char (match-end 1)))))))))
+ ))
+
+
+
+;; C# does not allow a leading qualifier operator. It also doesn't
+;; allow the ".*" construct of Java. So, we redo this regex without
+;; the "\\|\\*" regex.
+(c-lang-defconst c-identifier-key
+ csharp (concat "\\(" (c-lang-const c-symbol-key) "\\)" ; 1
+ (concat "\\("
+ "[ \t\n\r\f\v]*"
+ (c-lang-const c-opt-identifier-concat-key)
+ "[ \t\n\r\f\v]*"
+ (concat "\\("
+ "\\(" (c-lang-const c-symbol-key) "\\)"
+ "\\)")
+ "\\)*")))
+
+;; C# has a few rules that are slightly different than Java for
+;; operators. This also removed the Java's "super" and replaces it
+;; with the C#'s "base".
+(c-lang-defconst c-operators
+ csharp `((prefix "base")))
+
+
+;; C# uses CPP-like prefixes to mark #define, #region/endregion,
+;; #if/else/endif, and #pragma. This regexp matches the prefix,
+;; not including the beginning-of-line (BOL), and not including
+;; the term after the prefix (define, pragma, etc). This regexp says
+;; whitespace, followed by the prefix, followed by maybe more whitespace.
+
+(c-lang-defconst c-opt-cpp-prefix
+ csharp "\\s *#\\s *")
+
+
+;; there are no message directives in C#
+(c-lang-defconst c-cpp-message-directives
+ csharp nil)
+
+(c-lang-defconst c-cpp-expr-directives
+ csharp '("if"))
+
+(c-lang-defconst c-opt-cpp-macro-define
+ csharp "define")
+
+;; $ is not a legal char in an identifier in C#. So we need to
+;; create a csharp-specific definition of this constant.
+(c-lang-defconst c-symbol-chars
+ csharp (concat c-alnum "_"))
+
+
+(c-lang-defconst c-colon-type-list-kwds
+ csharp '("class"))
+
+(c-lang-defconst c-block-prefix-disallowed-chars
+
+ ;; Allow ':' for inherit list starters.
+ csharp (set-difference (c-lang-const c-block-prefix-disallowed-chars)
+ '(?: ?,)))
+
+
+(c-lang-defconst c-assignment-operators
+ csharp '("=" "*=" "/=" "%=" "+=" "-=" ">>=" "<<=" "&=" "^=" "|="))
+
+(c-lang-defconst c-primitive-type-kwds
+ ;; ECMA-344, S8
+ csharp '("object" "string" "sbyte" "short" "int" "long" "byte"
+ "ushort" "uint" "ulong" "float" "double" "bool" "char"
+ "decimal" "void"))
+
+;; The keywords that define that the following is a type, such as a
+;; class definition.
+(c-lang-defconst c-type-prefix-kwds
+ ;; ECMA-344, S?
+ csharp '("class" "interface" "struct")) ;; no enum here.
+ ;; we want enum to be a brace list.
+
+
+;; Type modifier keywords. They appear anywhere in types, but modify
+;; instead of create one.
+(c-lang-defconst c-type-modifier-kwds
+ ;; EMCA-344, S?
+ csharp '("readonly" "const"))
+
+
+;; Tue, 20 Apr 2010 16:02
+;; need to vverify that this works for lambdas...
+(c-lang-defconst c-special-brace-lists
+ csharp '((?{ . ?}) ))
+
+
+
+;; dinoch
+;; Thu, 22 Apr 2010 18:54
+;;
+;; No idea why this isn't getting set properly in the first place.
+;; In cc-langs.el, it is set to the union of a bunch of things, none
+;; of which include "new", or "enum".
+;;
+;; But somehow both of those show up in the resulting derived regexp.
+;; This breaks indentation of instance initializers, such as
+;;
+;; var x = new Foo { ... };
+;;
+;; Based on my inspection, the existing c-lang-defconst should work!
+;; I don't know how to fix this c-lang-defconst, so I am re-setting this
+;; variable here, to provide the regex explicitly.
+;;
+(c-lang-defconst c-decl-block-key
+
+ csharp '"\\(namespace\\)\\([^[:alnum:]_]\\|$\\)\\|\\(class\\|interface\\|struct\\)\\([^[:alnum:]_]\\|$\\)"
+ )
+
+
+
+;; Thu, 22 Apr 2010 14:29
+;; I want this to handle var x = new Foo[] { ... };
+;; not sure if necessary.
+(c-lang-defconst c-inexpr-brace-list-kwds
+ csharp '("new"))
+
+
+;; ;;(c-lang-defconst c-inexpr-class-kwds
+;; ;; csharp '("new"))
+
+
+
+(c-lang-defconst c-class-decl-kwds
+ ;; EMCA-344, S?
+ csharp '("class" "interface" "struct" )) ;; no "enum"!!
+
+
+;; The various modifiers used for class and method descriptions.
+(c-lang-defconst c-modifier-kwds
+ csharp '("public" "partial" "private" "const" "abstract"
+ "protected" "ref" "out" "static" "virtual"
+ "override" "params" "internal"))
+
+
+;; Thu, 22 Apr 2010 23:02
+;; Based on inspection of the cc-mode code, the c-protection-kwds
+;; c-lang-const is used only for objective-c. So the value is
+;; irrelevant for csharp.
+(c-lang-defconst c-protection-kwds
+ csharp nil
+ ;; csharp '("private" "protected" "public" "internal")
+)
+
+
+;; Define the keywords that can have something following after them.
+(c-lang-defconst c-type-list-kwds
+ csharp '("struct" "class" "interface" "is" "as"
+ "delegate" "event" "set" "get" "add" "remove"))
+
+
+;; This allows the classes after the : in the class declartion to be
+;; fontified.
+(c-lang-defconst c-typeless-decl-kwds
+ csharp '(":"))
+
+;; Sets up the enum to handle the list properly, and also the new
+;; keyword to handle object initializers. This requires a modified
+;; c-basic-matchers-after (see above) in order to correctly fontify C#
+;; 3.0 object initializers.
+(c-lang-defconst c-brace-list-decl-kwds
+ csharp '("enum" "new"))
+
+
+;; Statement keywords followed directly by a substatement.
+;; catch is not one of them.
+(c-lang-defconst c-block-stmt-1-kwds
+ csharp '("do" "try" "finally"))
+
+
+;; Statement keywords followed by a paren sexp and then by a substatement.
+(c-lang-defconst c-block-stmt-2-kwds
+ csharp '("for" "if" "switch" "while" "catch" "foreach" "using"
+ "checked" "unchecked" "lock"))
+
+
+;; Statements that break out of braces
+(c-lang-defconst c-simple-stmt-kwds
+ csharp '("return" "continue" "break" "throw" "goto" ))
+
+;; Statements that allow a label
+;; TODO?
+(c-lang-defconst c-before-label-kwds
+ csharp nil)
+
+;; Constant keywords
+(c-lang-defconst c-constant-kwds
+ csharp '("true" "false" "null"))
+
+;; Keywords that start "primary expressions."
+(c-lang-defconst c-primary-expr-kwds
+ csharp '("this" "base"))
+
+;; Treat namespace as an outer block so class indenting
+;; works properly.
+(c-lang-defconst c-other-block-decl-kwds
+ csharp '("namespace"))
+
+(c-lang-defconst c-other-kwds
+ csharp '("in" "sizeof" "typeof" "is" "as" "yield"
+ "where" "select" "from"))
+
+(c-lang-defconst c-overloadable-operators
+ ;; EMCA-344, S14.2.1
+ csharp '("+" "-" "*" "/" "%" "&" "|" "^"
+ "<<" ">>" "==" "!=" ">" "<" ">=" "<="))
+
+
+;; This c-cpp-matchers stuff is used for fontification.
+;; see cc-font.el
+;;
+
+;; There's no preprocessor in C#, but there are still compiler
+;; directives to fontify: "#pragma", #region/endregion, #define, #undef,
+;; #if/else/endif. (The definitions for the extra keywords above are
+;; enough to incorporate them into the fontification regexps for types
+;; and keywords, so no additional font-lock patterns are required for
+;; keywords.)
+
+(c-lang-defconst c-cpp-matchers
+ csharp (cons
+ ;; Use the eval form for `font-lock-keywords' to be able to use
+ ;; the `c-preprocessor-face-name' variable that maps to a
+ ;; suitable face depending on the (X)Emacs version.
+ '(eval . (list "^\\s *\\(#pragma\\|undef\\|define\\)\\>\\(.*\\)"
+ (list 1 c-preprocessor-face-name)
+ '(2 font-lock-string-face)))
+ ;; There are some other things in `c-cpp-matchers' besides the
+ ;; preprocessor support, so include it.
+ (c-lang-const c-cpp-matchers)))
+
+(defcustom csharp-font-lock-extra-types nil
+ "*List of extra types (aside from the type keywords) to recognize in C# mode.
+Each list item should be a regexp matching a single identifier."
+ :type 'list :group 'csharp)
+
+(defconst csharp-font-lock-keywords-1 (c-lang-const c-matchers-1 csharp)
+ "Minimal highlighting for C# mode.")
+
+(defconst csharp-font-lock-keywords-2 (c-lang-const c-matchers-2 csharp)
+ "Fast normal highlighting for C# mode.")
+
+(defconst csharp-font-lock-keywords-3 (c-lang-const c-matchers-3 csharp)
+ "Accurate normal highlighting for C# mode.")
+
+(defvar csharp-font-lock-keywords csharp-font-lock-keywords-3
+ "Default expressions to highlight in C# mode.")
+
+(defvar csharp-mode-syntax-table nil
+ "Syntax table used in csharp-mode buffers.")
+(or csharp-mode-syntax-table
+ (setq csharp-mode-syntax-table
+ (funcall (c-lang-const c-make-mode-syntax-table csharp))))
+
+(defvar csharp-mode-abbrev-table nil
+ "Abbreviation table used in csharp-mode buffers.")
+(c-define-abbrev-table 'csharp-mode-abbrev-table
+ ;; Keywords that if they occur first on a line might alter the
+ ;; syntactic context, and which therefore should trig reindentation
+ ;; when they are completed.
+ '(("else" "else" c-electric-continued-statement 0)
+ ("while" "while" c-electric-continued-statement 0)
+ ("catch" "catch" c-electric-continued-statement 0)
+ ("finally" "finally" c-electric-continued-statement 0)))
+
+(defvar csharp-mode-map (let ((map (c-make-inherited-keymap)))
+ ;; Add bindings which are only useful for C#
+ map)
+ "Keymap used in csharp-mode buffers.")
+
+
+;; TODO
+;; Defines our constant for finding attributes.
+;;(defconst csharp-attribute-regex "\\[\\([XmlType]+\\)(")
+;;(defconst csharp-attribute-regex "\\[\\(.\\)")
+;; This doesn't work because the string regex happens before this point
+;; and getting the font-locking to work before and after is fairly difficult
+;;(defconst csharp-attribute-regex
+;; (concat
+;; "\\[[a-zA-Z][ \ta-zA-Z0-9.]+"
+;; "\\((.*\\)?"
+;;))
+
+
+;; ==================================================================
+;; end of c# values for "language constants" defined in cc-langs.el
+;; ==================================================================
+
+
+
+
+;; ==================================================================
+;; C# code-doc insertion magic
+;; ==================================================================
+;;
+;; In Visual Studio, if you type three slashes, it immediately expands into
+;; an inline code-documentation fragment. The following method does the
+;; same thing.
+;;
+;; This is the kind of thing that could be handled by YASnippet or
+;; another similarly flexible snippet framework. But I don't want to
+;; introduce a dependency on yasnippet to csharp-mode. So the capability
+;; must live within csharp-mode itself.
+
+(defun csharp-maybe-insert-codedoc (arg)
+
+ "Insert an xml code documentation template as appropriate, when
+typing slashes. This fn gets bound to / (the slash key), in
+csharp-mode. If the slash being inserted is not the third
+consecutive slash, the slash is inserted as normal. If it is the
+third consecutive slash, then a xml code documentation template
+may be inserted in some cases. For example,
+
+ a <summary> template is inserted if the prior line is empty,
+ or contains only an open curly brace;
+ a <remarks> template is inserted if the prior word
+ closes the <summary> element;
+ a <returns> template is inserted if the prior word
+ closes the <remarks> element;
+ an <example> template is inserted if the prior word closes
+ the <returns> element;
+ a <para> template is inserted if the prior word closes
+ a <para> element.
+
+In all other cases the slash is inserted as normal.
+
+If you want the default cc-mode behavior, which implies no automatic
+insertion of xml code documentation templates, then use this in
+your `csharp-mode-hook' function:
+
+ (local-set-key (kbd \"/\") 'c-electric-slash)
+
+ "
+ (interactive "*p")
+ ;;(message "csharp-maybe-insert-codedoc")
+ (let (
+ (cur-point (point))
+ (char last-command-char)
+ (cb0 (char-before (- (point) 0)))
+ (cb1 (char-before (- (point) 1)))
+ is-first-non-whitespace
+ did-auto-insert
+ )
+
+ ;; check if two prior chars were slash
+ (if (and
+ (= char ?/)
+ cb0 (= ?/ cb0)
+ cb1 (= ?/ cb1)
+ )
+
+ (progn
+ ;;(message "yes - this is the third consecutive slash")
+ (setq is-first-non-whitespace
+ (save-excursion
+ (back-to-indentation)
+ (= cur-point (+ (point) 2))))
+
+ (if is-first-non-whitespace
+ ;; This is a 3-slash sequence. It is the first non-whitespace text
+ ;; on the line. Now we need to examine the surrounding context
+ ;; in order to determine which xml cod doc template to insert.
+ (let (word-back char0 char1
+ word-fore char-0 char-1
+ text-to-insert ;; text to insert in lieu of slash
+ fn-to-call ;; func to call after inserting text
+ (preceding-line-is-empty (or
+ (= (line-number-at-pos) 1)
+ (save-excursion
+ (previous-line)
+ (beginning-of-line)
+ (looking-at "[ \t]*$\\|[ \t]*{[ \t]*$"))))
+ (flavor 0) ;; used only for diagnostic purposes
+ )
+
+ ;;(message "starting a 3-slash comment")
+ ;; get the prior word, and the 2 chars preceding it.
+ (backward-word)
+
+ (setq word-back (thing-at-point 'word)
+ char0 (char-before (- (point) 0))
+ char1 (char-before (- (point) 1)))
+
+ ;; restore prior position
+ (goto-char cur-point)
+
+ ;; get the following word, and the 2 chars preceding it.
+ (forward-word)
+ (backward-word)
+ (setq word-fore (thing-at-point 'word)
+ char-0 (char-before (- (point) 0))
+ char-1 (char-before (- (point) 1)))
+
+ ;; restore prior position again
+ (goto-char cur-point)
+
+ (cond
+ ;; The preceding line is empty, or all whitespace, or
+ ;; contains only an open-curly. In this case, insert a
+ ;; summary element pair.
+ (preceding-line-is-empty
+ (setq text-to-insert "/ <summary>\n/// \n/// </summary>"
+ flavor 1) )
+
+ ;; The preceding word closed a summary element. In this case,
+ ;; if the forward word does not open a remarks element, then
+ ;; insert a remarks element.
+ ((and (string-equal word-back "summary") (eq char0 ?/) (eq char1 ?<))
+ (if (not (and (string-equal word-fore "remarks") (eq char-0 ?<)))
+ (setq text-to-insert "/ <remarks>\n/// <para>\n/// \n/// </para>\n/// </remarks>"
+ flavor 2)))
+
+ ;; The preceding word closed the remarks section. In this case,
+ ;; insert an example element.
+ ((and (string-equal word-back "remarks") (eq char0 ?/) (eq char1 ?<))
+ (setq text-to-insert "/ <example>\n/// \n/// </example>"
+ flavor 3))
+
+ ;; The preceding word closed the example section. In this
+ ;; case, insert an returns element. This isn't always
+ ;; correct, because sometimes the xml code doc is attached to
+ ;; a class or a property, neither of which has a return
+ ;; value. A more intelligent implementation would inspect the
+ ;; syntax state and only inject a returns element if
+ ;; appropriate.
+ ((and (string-equal word-back "example") (eq char0 ?/) (eq char1 ?<))
+ (setq text-to-insert "/ <returns></returns>"
+ fn-to-call (lambda ()
+ (backward-word)
+ (backward-char)
+ (backward-char)
+ (c-indent-line-or-region)
+ )
+ flavor 4))
+
+ ;; The preceding word opened the remarks section, or it
+ ;; closed a para section. In this case, insert a para
+ ;; element, using appropriate indentation with respect to the
+ ;; prior tag.
+ ((or
+ (and (string-equal word-back "remarks") (eq char0 ?<) (or (eq char1 32) (eq char1 9)))
+ (and (string-equal word-back "para") (eq char0 ?/) (eq char1 ?<)))
+
+ (let (prior-point spacer)
+ (save-excursion
+ (backward-word)
+ (backward-char)
+ (backward-char)
+ (setq prior-point (point))
+ (skip-chars-backward "\t ")
+ (setq spacer (buffer-substring (point) prior-point))
+ ;;(message (format "pt(%d) prior(%d) spacer(%s)" (point) prior-point spacer))
+ )
+
+ (if (string-equal word-back "remarks")
+ (setq spacer (concat spacer " ")))
+
+ (setq text-to-insert (format "/%s<para>\n///%s \n///%s</para>"
+ spacer spacer spacer)
+ flavor 6)))
+
+ ;; The preceding word opened a para element. In this case, if
+ ;; the forward word does not close the para element, then
+ ;; close the para element.
+ ;; --
+ ;; This is a nice idea but flawed. Suppose I have a para element with some
+ ;; text in it. If I position the cursor at the first line, then type 3 slashes,
+ ;; I get a close-element, and that would be inappropriate. Not sure I can
+ ;; easily solve that problem, so the best thing might be to simply punt, and
+ ;; require people to close their own elements.
+ ;;
+ ;; ( (and (string-equal word-back "para") (eq char0 60) (or (eq char1 32) (eq char1 9)))
+ ;; (if (not (and (string-equal word-fore "para") (eq char-0 47) (eq char-1 60) ))
+ ;; (setq text-to-insert "/ \n/// </para>\n///"
+ ;; fn-to-call (lambda ()
+ ;; (previous-line)
+ ;; (end-of-line)
+ ;; )
+ ;; flavor 7) )
+ ;; )
+
+ ;; the default case - do nothing
+ (t nil))
+
+ (if text-to-insert
+ (progn
+ ;;(message (format "inserting special text (f(%d))" flavor))
+
+ ;; set the flag, that we actually inserted text
+ (setq did-auto-insert t)
+
+ ;; save point of beginning of insertion
+ (setq cur-point (point))
+
+ ;; actually insert the text
+ (insert text-to-insert)
+
+ ;; indent the inserted string, and re-position point, either through
+ ;; the case-specific fn, or via the default progn.
+ (if fn-to-call
+ (funcall fn-to-call)
+
+ (let ((newline-count 0) (pos 0) ix)
+
+ ;; count the number of newlines in the inserted string
+ (while (string-match "\n" text-to-insert pos)
+ (setq pos (match-end 0)
+ newline-count (+ newline-count 1) )
+ )
+
+ ;; indent what we just inserted
+ (c-indent-region cur-point (point) t)
+
+ ;; move up n/2 lines. This assumes that the
+ ;; inserted text is ~symmetric about the halfway point.
+ ;; The assumption holds if the xml code doc uses a
+ ;; begin-elt and end-elt on a new line all by themselves,
+ ;; and a blank line in between them where the point should be.
+ ;; A more intelligent implementation would use a specific
+ ;; marker string, like @@DOT, to note the desired point.
+ (previous-line (/ newline-count 2))
+ (end-of-line)))))))))
+
+ (if (not did-auto-insert)
+ (self-insert-command (prefix-numeric-value arg)))))
+
+;; ==================================================================
+;; end of c# code-doc insertion magic
+;; ==================================================================
+
+
+
+
+;; ==================================================================
+;; c# fontification extensions
+;; ==================================================================
+;; Commentary:
+;;
+;; The purpose of the following code is to fix font-lock for C#,
+;; specifically for the verbatim-literal strings. C# is a cc-mode
+;; language and strings are handled mostly like other c-based
+;; languages. The one exception is the verbatim-literal string, which
+;; uses the syntax @"...".
+;;
+;; `parse-partial-sexp' treats those strings as just regular strings,
+;; with the @ a non-string character. This is fine, except when the
+;; verblit string ends in a slash, in which case, font-lock breaks from
+;; that point onward in the buffer.
+;;
+;; This is an attempt to fix that.
+;;
+;; The idea is to scan the buffer in full for verblit strings, and apply the
+;; appropriate syntax-table text properties for verblit strings. Also setting
+;; `parse-sexp-lookup-properties' to t tells `parse-partial-sexp'
+;; to use the syntax-table text properties set up by the scan as it does
+;; its parse.
+;;
+;; Also need to re-scan after any changes in the buffer, but on a more
+;; limited region.
+;;
+
+
+;; ;; I don't remember what this is supposed to do,
+;; ;; or how I figured out the value.
+;; ;;
+;; (defconst csharp-font-lock-syntactic-keywords
+;; '(("\\(@\\)\\(\"\\)[^\"]*\\(\"\\)\\(\"\\)[^\"]*\\(\"\\)[^\"]"
+;; (1 '(6)) (2 '(7)) (3 '(1)) (4 '(1)) (5 '(7))
+;; ))
+;; "Highlighting of verbatim literal strings. See also the variable
+;; `font-lock-keywords'.")
+
+
+
+;; Allow this:
+;; (csharp-log 3 "csharp: scan...'%s'" state)
+
+(defvar csharp-log-level 0
+ "The current log level for CSharp-specific operations.
+This is used in particular by the verbatim-literal
+string scanning.
+
+Most other csharp functions are not instrumented.
+0 = NONE, 1 = Info, 2 = VERBOSE, 3 = DEBUG, 4 = SHUTUP ALREADY. ")
+
+(defun csharp-log (level text &rest args)
+ "Log a message at level LEVEL.
+If LEVEL is higher than `csharp-log-level', the message is
+ignored. Otherwise, it is printed using `message'.
+TEXT is a format control string, and the remaining arguments ARGS
+are the string substitutions (see `format')."
+ (if (<= level csharp-log-level)
+ (let* ((msg (apply 'format text args)))
+ (message "%s" msg)
+ )))
+
+
+
+(defun csharp-max-beginning-of-stmt ()
+ "Return the greater of `c-beginning-of-statement-1' and
+`c-beginning-of-statement' . I don't understand why both of
+these methods are necessary or why they differ. But they do."
+
+ (let (dash
+ nodash
+ (curpos (point)))
+
+ ;; I think this may need a save-excursion...
+ ;; Calling c-beginning-of-statement-1 resets the point!
+
+ (setq dash (progn (c-beginning-of-statement-1) (point)))
+ (csharp-log 3 "C#: max-bostmt dash(%d)" dash)
+ (goto-char curpos)
+
+ (setq nodash (progn (c-beginning-of-statement 1) (point)))
+ (csharp-log 3 "C#: max-bostmt nodash(%d)" nodash)
+ (goto-char curpos)
+
+ (max dash nodash)))
+
+
+(defun csharp-in-literal (&optional lim detect-cpp)
+ "Return the type of literal point is in, if any.
+Basically this works like `c-in-literal' except it doesn't
+use or fill the cache (`c-in-literal-cache').
+
+The return value is `c' if in a C-style comment, `c++' if in a C++
+style comment, `string' if in a string literal, `pound' if DETECT-CPP
+is non-nil and in a preprocessor line, or nil if somewhere else.
+Optional LIM is used as the backward limit of the search. If omitted,
+or nil, `c-beginning-of-syntax' is used.
+
+Note that this function might do hidden buffer changes. See the
+comment at the start of cc-engine.el for more info."
+
+ (let ((rtn
+ (save-excursion
+ (let* ((pos (point))
+ (lim (or lim (progn
+ (c-beginning-of-syntax)
+ (point))))
+ (state (parse-partial-sexp lim pos)))
+ (csharp-log 4 "C#: parse lim(%d) state: %s" lim (prin1-to-string state))
+ (cond
+ ((elt state 3)
+ (csharp-log 4 "C#: in literal string (%d)" pos)
+ 'string)
+ ((elt state 4)
+ (csharp-log 4 "C#: in literal comment (%d)" pos)
+ (if (elt state 7) 'c++ 'c))
+ ((and detect-cpp (c-beginning-of-macro lim)) 'pound)
+ (t nil))))))
+ rtn))
+
+
+(defun csharp-set-vliteral-syntax-table-properties (beg end)
+ "Scan the buffer text between BEG and END, a verbatim literal
+string, setting and clearing syntax-table text properties where
+necessary.
+
+We need to modify the default syntax-table text property in these cases:
+ (backslash) - is not an escape inside a verbatim literal string.
+ (double-quote) - can be a literal quote, when doubled.
+
+BEG is the @ delimiter. END is the 'old' position of the ending quote.
+
+see http://www.sunsite.ualberta.ca/Documentation/Gnu/emacs-lisp-ref-21-2.7/html_node/elisp_592.html
+for the list of syntax table numeric codes.
+
+"
+
+ (csharp-log 3 "C#: set-vlit-syntax-table: beg(%d) end(%d)" beg end)
+
+ (if (and (> beg 0) (> end 0))
+
+ (let ((curpos beg)
+ (state 0))
+
+ (c-clear-char-properties beg end 'syntax-table)
+
+ (while (<= curpos end)
+
+ (cond
+ ((= state 0)
+ (if (= (char-after curpos) ?@)
+ (progn
+ (c-put-char-property curpos 'syntax-table '(3)) ; (6) = expression prefix, (3) = symbol
+ ;;(message (format "C#: set-s-t: prefix pos(%d) chr(%c)" beg (char-after beg)))
+ )
+ )
+ (setq state (+ 1 state)))
+
+ ((= state 1)
+ (if (= (char-after curpos) ?\")
+ (progn
+ (c-put-char-property curpos 'syntax-table '(7)) ; (7) = string quote
+ ;;(message (format "C#: set-s-t: open quote pos(%d) chr(%c)"
+ ;; curpos (char-after curpos)))
+ ))
+ (setq state (+ 1 state)))
+
+ ((= state 2)
+ (cond
+ ;; handle backslash
+ ((= (char-after curpos) ?\\)
+ (c-put-char-property curpos 'syntax-table '(2)) ; (1) = punctuation, (2) = word
+ ;;(message (format "C#: set-s-t: backslash word pos(%d) chr(%c)" curpos (char-after curpos)))
+ )
+
+ ;; doubled double-quote
+ ((and
+ (= (char-after curpos) ?\")
+ (= (char-after (+ 1 curpos)) ?\"))
+ (c-put-char-property curpos 'syntax-table '(2)) ; (1) = punctuation, (2) = word
+ (c-put-char-property (+ 1 curpos) 'syntax-table '(2)) ; (1) = punctuation
+ ;;(message (format "C#: set-s-t: double doublequote pos(%d) chr(%c)" curpos (char-after curpos)))
+ (setq curpos (+ curpos 1))
+ )
+
+ ;; a single double-quote, which should be a string terminator
+ ((= (char-after curpos) ?\")
+ (c-put-char-property curpos 'syntax-table '(7)) ; (7) = string quote
+ ;;(message (format "C#: set-s-t: close quote pos(%d) chr(%c)" curpos (char-after curpos)))
+ ;;go no further
+ (setq state (+ 1 state)))
+
+ ;; everything else
+ (t
+ ;;(message (format "C#: set-s-t: none pos(%d) chr(%c)" curpos (char-after curpos)))
+ nil))))
+ ;; next char
+ (setq curpos (+ curpos 1))))))
+
+
+
+(defun csharp-end-of-verbatim-literal-string (&optional lim)
+ "Moves to and returns the position of the end quote of the verbatim literal
+string. When calling, point should be on the @ of the verblit string.
+If it is not, then no movement is performed and `point' is returned.
+
+This function ignores text properties. In fact it is the
+underlying scanner used to set the text properties in a C# buffer.
+"
+
+ (csharp-log 3 "C#: end-of-vlit-string: point(%d) c(%c)" (point) (char-after))
+
+ (let (curpos
+ (max (or lim (point-max))))
+
+ (if (not (looking-at "@\""))
+ (point)
+ (forward-char 2) ;; pass up the @ sign and first quote
+ (setq curpos (point))
+
+ ;; Within a verbatim literal string, a doubled double-quote
+ ;; escapes the double-quote."
+ (while (and ;; process characters...
+ (or ;; while...
+ (not (eq (char-after curpos) ?\")) ;; it's not a quote
+ (eq (char-after (+ curpos 1)) ?\")) ;; or, its a double (double) quote
+ (< curpos max)) ;; and we're not done yet
+
+ (cond
+ ((and (eq (char-after curpos) ?\") ;; it's a double-quote.
+ (eq (char-after (+ curpos 1)) ?\"))
+ (setq curpos (+ 2 curpos))) ;; Skip 2
+ (t ;; anything else
+ (setq curpos (+ 1 curpos))))) ;; skip fwd 1
+ curpos)))
+
+
+
+
+(defun csharp-scan-for-verbatim-literals-and-set-props (&optional beg end)
+
+"Scans the buffer, between BEG and END, for verbatim literal
+strings, and sets override text properties on each string to
+allow proper syntax highlighting, indenting, and cursor movement.
+
+BEG and END define the limits of the scan. When nil, they
+default to `point-min' and `point-max' respectively.
+
+Setting text properties generally causes the buffer to be marked
+as modified, but this fn suppresses that via the
+`c-buffer-save-state' macro, for any changes in text properties
+that it makes. This fn also ignores the read-only setting on a
+buffer, using the same macro.
+
+This fn is called when a csharp-mode buffer is loaded, with BEG
+and END set to nil, to do a full scan. It is also called on
+every buffer change, with the BEG and END set to the values for
+the change.
+
+The return value is nil if the buffer was not a csharp-mode
+buffer. Otherwise it is the last cursor position examined by the
+scan.
+"
+
+ (if (not (c-major-mode-is 'csharp-mode)) ;; don't scan if not csharp mode
+ nil
+ (save-excursion
+ (c-save-buffer-state
+ ((curpos (or beg (point-min)))
+ (lastpos (or end (point-max)))
+ (state 0) (start 0) (cycle 0)
+ literal eos limits)
+
+ (csharp-log 3 "C#: scan")
+ (goto-char curpos)
+
+ (while (and (< curpos lastpos) (< cycle 10000))
+ (cond
+
+ ;; Case 1: current char is a @ sign
+ ;; --------------------------------------------
+ ;; Check to see if it demarks the beginning of a verblit
+ ;; string.
+ ((= ?@ (char-after curpos))
+
+ ;; are we in a comment? a string? Maybe the @ is a prefix
+ ;; to allow the use of a reserved word as a symbol. Let's find out.
+
+ ;; not sure why I need both of the following.
+ (syntax-ppss-flush-cache 1)
+ (parse-partial-sexp 1 curpos)
+ (goto-char curpos)
+ (setq literal (csharp-in-literal))
+ (cond
+
+ ;; Case 1.A: it's a @ within a string.
+ ;; --------------------------------------------
+ ;; This should never happen, because this scanner hops over strings.
+ ;; But it might happen if the scan starts at an odd place.
+ ((eq literal 'string) nil)
+
+ ;; Case 1.B: The @ is within a comment. Hop over it.
+ ((and (memq literal '(c c++))
+ ;; This is a kludge for XEmacs where we use
+ ;; `buffer-syntactic-context', which doesn't correctly
+ ;; recognize "\*/" to end a block comment.
+ ;; `parse-partial-sexp' which is used by
+ ;; `c-literal-limits' will however do that in most
+ ;; versions, which results in that we get nil from
+ ;; `c-literal-limits' even when `c-in-literal' claims
+ ;; we're inside a comment.
+ ;;(setq limits (c-literal-limits start)))
+ (setq limits (c-literal-limits)))
+
+ ;; advance to the end of the comment
+ (if limits
+ (progn
+ (csharp-log 4 "C#: scan: jump end comment A (%d)" (cdr limits))
+ (setq curpos (cdr limits)))))
+
+
+ ;; Case 1.B: curpos is at least 2 chars before the last
+ ;; position to examine, and, the following char is a
+ ;; double-quote (ASCII 34).
+ ;; --------------------------------------------
+ ;; This looks like the beginning of a verbatim string
+ ;; literal.
+ ((and (< (+ 2 curpos) lastpos)
+ (= ?\" (char-after (+ 1 curpos))))
+
+ (setq eos (csharp-end-of-verbatim-literal-string))
+ ;; set override syntax properties on the verblit string
+ (csharp-set-vliteral-syntax-table-properties curpos eos)
+
+ (csharp-log 4 "C#: scan: jump end verblit string (%d)" eos)
+ (setq curpos eos))))
+
+
+ ;; Case 2: current char is a double-quote.
+ ;; --------------------------------------------
+ ;; If this is a string, we hop over it, on the assumption that
+ ;; this scanner need not bother with regular literal strings, which
+ ;; get the proper syntax with the generic approach.
+ ;; If in a comment, hop over the comment.
+ ((= ?\" (char-after curpos))
+ (goto-char curpos)
+ (setq literal (c-in-literal))
+ (cond
+
+ ;; Case 2.A: a quote within a string
+ ;; --------------------------------------------
+ ;; This shouldn't happen, because we hop over strings.
+ ;; But it might.
+ ((eq literal 'string) nil)
+
+ ;; Case 2.B: a quote within a comment
+ ;; --------------------------------------------
+ ((and (memq literal '(c c++))
+ ;; This is a kludge for XEmacs where we use
+ ;; `buffer-syntactic-context', which doesn't correctly
+ ;; recognize "\*/" to end a block comment.
+ ;; `parse-partial-sexp' which is used by
+ ;; `c-literal-limits' will however do that in most
+ ;; versions, which results in that we get nil from
+ ;; `c-literal-limits' even when `c-in-literal' claims
+ ;; we're inside a comment.
+ ;;(setq limits (c-literal-limits start)))
+ (setq limits (c-literal-limits)))
+
+ ;; advance to the end of the comment
+ (if limits
+ (progn
+ (setq curpos (cdr limits))
+ (csharp-log 3 "C#: scan: jump end comment B (%s)" curpos))))
+
+
+ ;; Case 2.C: Not in a comment, and not in a string.
+ ;; --------------------------------------------
+ ;; This is the beginning of a literal (but not verbatim) string.
+ (t
+ (forward-char 1) ;; pass up the quote
+ (if (consp (setq limits (c-literal-limits)))
+ (progn
+ (csharp-log 4 "C#: scan: jump end literal (%d)" (cdr limits))
+ (setq curpos (cdr limits))))))))
+
+ (setq cycle (+ 1 cycle))
+ (setq curpos (+ 1 curpos))
+ (c-safe (goto-char curpos)))))))
+
+
+(defun csharp-before-font-lock (beg end old-len)
+ "Adjust`syntax-table' properties on the region affected by the change
+in a csharp-mode buffer.
+
+This function is the C# value for `c-before-font-lock-function'.
+It intended to be called only by the cc-mode runtime.
+
+It prepares the buffer for font locking, hence must get called
+before `font-lock-after-change-function'.
+
+It does hidden buffer changes.
+
+BEG, END and OLD-LEN have the same meaning here as for any
+after-change function.
+
+Point is undefined both before and after this function call.
+The return value is meaningless, and is ignored by cc-mode.
+"
+ (let ((start-scan (progn
+ (c-beginning-of-statement 1)
+ (point))))
+ (csharp-scan-for-verbatim-literals-and-set-props start-scan end)))
+
+
+
+(c-lang-defconst c-before-font-lock-function
+ csharp 'csharp-before-font-lock)
+
+;; ==================================================================
+;; end of c# fontification extensions
+;; ==================================================================
+
+
+
+
+
+;; ==================================================================
+;; C#-specific optimizations of cc-mode funcs
+;; ==================================================================
+
+
+;; There's never a need to check for C-style macro definitions in
+;; a C# buffer.
+(defadvice c-beginning-of-macro (around
+ csharp-mode-advice-1
+ compile activate)
+ (if (c-major-mode-is 'csharp-mode)
+ nil
+ ad-do-it)
+ )
+
+
+;; There's never a need to move over an Obj-C directive in csharp mode
+(defadvice c-forward-objc-directive (around
+ csharp-mode-advice-2
+ compile activate)
+ (if (c-major-mode-is 'csharp-mode)
+ nil
+ ad-do-it)
+ )
+
+;; ==================================================================
+;; end of C#-specific optimizations of cc-mode funcs
+;; ==================================================================
+
+
+
+
+
+
+
+
+;; ==================================================================
+;; c# - monkey-patching of basic parsing logic
+;; ==================================================================
+;;
+;; Here, the model redefines two defuns to add special cases for csharp
+;; mode. These primarily deal with indentation of instance
+;; initializers, which are somewhat unique to C#. I couldn't figure out
+;; how to get cc-mode to do what C# needs, without modifying these
+;; defuns.
+;;
+
+(defun c-looking-at-inexpr-block (lim containing-sexp &optional check-at-end)
+ ;; Return non-nil if we're looking at the beginning of a block
+ ;; inside an expression. The value returned is actually a cons of
+ ;; either 'inlambda, 'inexpr-statement or 'inexpr-class and the
+ ;; position of the beginning of the construct.
+ ;;
+ ;; LIM limits the backward search. CONTAINING-SEXP is the start
+ ;; position of the closest containing list. If it's nil, the
+ ;; containing paren isn't used to decide whether we're inside an
+ ;; expression or not. If both LIM and CONTAINING-SEXP are used, LIM
+ ;; needs to be farther back.
+ ;;
+ ;; If CHECK-AT-END is non-nil then extra checks at the end of the
+ ;; brace block might be done. It should only be used when the
+ ;; construct can be assumed to be complete, i.e. when the original
+ ;; starting position was further down than that.
+ ;;
+ ;; This function might do hidden buffer changes.
+
+ (save-excursion
+ (let ((res 'maybe) passed-paren
+ (closest-lim (or containing-sexp lim (point-min)))
+ ;; Look at the character after point only as a last resort
+ ;; when we can't disambiguate.
+ (block-follows (and (eq (char-after) ?{) (point))))
+
+ (while (and (eq res 'maybe)
+ (progn (c-backward-syntactic-ws)
+ (> (point) closest-lim))
+ (not (bobp))
+ (progn (backward-char)
+ (looking-at "[\]\).]\\|\\w\\|\\s_"))
+ (c-safe (forward-char)
+ (goto-char (scan-sexps (point) -1))))
+
+ (setq res
+ (if (looking-at c-keywords-regexp)
+ (let ((kw-sym (c-keyword-sym (match-string 1))))
+ (cond
+ ((and block-follows
+ (c-keyword-member kw-sym 'c-inexpr-class-kwds))
+ (and (not (eq passed-paren ?\[))
+
+ ;; dinoch Thu, 22 Apr 2010 18:20
+ ;; ============================================
+ ;; looking at new MyType() { ... }
+ ;; means this is a brace list, so, return nil,
+ ;; implying NOT looking-at-inexpr-block
+ (not
+ (and (c-major-mode-is 'csharp-mode)
+ (looking-at "new\s+\\([[:alnum:]_]+\\)\\b")))
+
+ (or (not (looking-at c-class-key))
+ ;; If the class instantiation is at the start of
+ ;; a statement, we don't consider it an
+ ;; in-expression class.
+ (let ((prev (point)))
+ (while (and
+ (= (c-backward-token-2 1 nil closest-lim) 0)
+ (eq (char-syntax (char-after)) ?w))
+ (setq prev (point)))
+ (goto-char prev)
+ (not (c-at-statement-start-p)))
+ ;; Also, in Pike we treat it as an
+ ;; in-expression class if it's used in an
+ ;; object clone expression.
+ (save-excursion
+ (and check-at-end
+ (c-major-mode-is 'pike-mode)
+ (progn (goto-char block-follows)
+ (zerop (c-forward-token-2 1 t)))
+ (eq (char-after) ?\())))
+ (cons 'inexpr-class (point))))
+ ((c-keyword-member kw-sym 'c-inexpr-block-kwds)
+ (when (not passed-paren)
+ (cons 'inexpr-statement (point))))
+ ((c-keyword-member kw-sym 'c-lambda-kwds)
+ (when (or (not passed-paren)
+ (eq passed-paren ?\())
+ (cons 'inlambda (point))))
+ ((c-keyword-member kw-sym 'c-block-stmt-kwds)
+ nil)
+ (t
+ 'maybe)))
+
+ (if (looking-at "\\s(")
+ (if passed-paren
+ (if (and (eq passed-paren ?\[)
+ (eq (char-after) ?\[))
+ ;; Accept several square bracket sexps for
+ ;; Java array initializations.
+ 'maybe)
+ (setq passed-paren (char-after))
+ 'maybe)
+ 'maybe))))
+
+ (if (eq res 'maybe)
+ (when (and c-recognize-paren-inexpr-blocks
+ block-follows
+ containing-sexp
+ (eq (char-after containing-sexp) ?\())
+ (goto-char containing-sexp)
+ (if (or (save-excursion
+ (c-backward-syntactic-ws lim)
+ (and (> (point) (or lim (point-min)))
+ (c-on-identifier)))
+ (and c-special-brace-lists
+ (c-looking-at-special-brace-list)))
+ nil
+ (cons 'inexpr-statement (point))))
+
+ res))))
+
+
+
+
+(defconst csharp-enum-decl-re
+ (concat
+ "\\<enum\\>\s+\\([[:alnum:]_]+\\)\s*:\s*"
+ "\\("
+ (c-make-keywords-re nil
+ (list "sbyte" "byte" "short" "ushort" "int" "uint" "long" "ulong"))
+ "\\)")
+ "Regex that captures an enum declaration in C#"
+ )
+
+
+
+(defun c-inside-bracelist-p (containing-sexp paren-state)
+ ;; return the buffer position of the beginning of the brace list
+ ;; statement if we're inside a brace list, otherwise return nil.
+ ;; CONTAINING-SEXP is the buffer pos of the innermost containing
+ ;; paren. PAREN-STATE is the remainder of the state of enclosing
+ ;; braces
+ ;;
+ ;; N.B.: This algorithm can potentially get confused by cpp macros
+ ;; placed in inconvenient locations. It's a trade-off we make for
+ ;; speed.
+ ;;
+ ;; This function might do hidden buffer changes.
+ (or
+ ;; This will pick up brace list declarations.
+ (c-safe
+ (save-excursion
+ (goto-char containing-sexp)
+ (c-forward-sexp -1)
+ (let (bracepos)
+ (if (and (or (looking-at c-brace-list-key)
+
+ (progn (c-forward-sexp -1)
+ (looking-at c-brace-list-key))
+
+ ;; dinoch Thu, 22 Apr 2010 18:20
+ ;; ============================================
+ ;; looking enum Foo : int
+ ;; means this is a brace list, so, return nil,
+ ;; implying NOT looking-at-inexpr-block
+
+ (and (c-major-mode-is 'csharp-mode)
+ (progn
+ (c-forward-sexp -1)
+ (looking-at csharp-enum-decl-re))))
+
+ (setq bracepos (c-down-list-forward (point)))
+ (not (c-crosses-statement-barrier-p (point)
+ (- bracepos 2))))
+ (point)))))
+ ;; this will pick up array/aggregate init lists, even if they are nested.
+ (save-excursion
+ (let ((class-key
+ ;; Pike can have class definitions anywhere, so we must
+ ;; check for the class key here.
+ (and (c-major-mode-is 'pike-mode)
+ c-decl-block-key))
+ bufpos braceassignp lim next-containing)
+ (while (and (not bufpos)
+ containing-sexp)
+ (when paren-state
+ (if (consp (car paren-state))
+ (setq lim (cdr (car paren-state))
+ paren-state (cdr paren-state))
+ (setq lim (car paren-state)))
+ (when paren-state
+ (setq next-containing (car paren-state)
+ paren-state (cdr paren-state))))
+ (goto-char containing-sexp)
+ (if (c-looking-at-inexpr-block next-containing next-containing)
+ ;; We're in an in-expression block of some kind. Do not
+ ;; check nesting. We deliberately set the limit to the
+ ;; containing sexp, so that c-looking-at-inexpr-block
+ ;; doesn't check for an identifier before it.
+ (setq containing-sexp nil)
+ ;; see if the open brace is preceded by = or [...] in
+ ;; this statement, but watch out for operator=
+ (setq braceassignp 'dontknow)
+ (c-backward-token-2 1 t lim)
+ ;; Checks to do only on the first sexp before the brace.
+ (when (and c-opt-inexpr-brace-list-key
+ (eq (char-after) ?\[))
+ ;; In Java, an initialization brace list may follow
+ ;; directly after "new Foo[]", so check for a "new"
+ ;; earlier.
+ (while (eq braceassignp 'dontknow)
+ (setq braceassignp
+ (cond ((/= (c-backward-token-2 1 t lim) 0) nil)
+ ((looking-at c-opt-inexpr-brace-list-key) t)
+ ((looking-at "\\sw\\|\\s_\\|[.[]")
+ ;; Carry on looking if this is an
+ ;; identifier (may contain "." in Java)
+ ;; or another "[]" sexp.
+ 'dontknow)
+ (t nil)))))
+ ;; Checks to do on all sexps before the brace, up to the
+ ;; beginning of the statement.
+ (while (eq braceassignp 'dontknow)
+ (cond ((eq (char-after) ?\;)
+ (setq braceassignp nil))
+ ((and class-key
+ (looking-at class-key))
+ (setq braceassignp nil))
+ ((eq (char-after) ?=)
+ ;; We've seen a =, but must check earlier tokens so
+ ;; that it isn't something that should be ignored.
+ (setq braceassignp 'maybe)
+ (while (and (eq braceassignp 'maybe)
+ (zerop (c-backward-token-2 1 t lim)))
+ (setq braceassignp
+ (cond
+ ;; Check for operator =
+ ((and c-opt-op-identifier-prefix
+ (looking-at c-opt-op-identifier-prefix))
+ nil)
+ ;; Check for `<opchar>= in Pike.
+ ((and (c-major-mode-is 'pike-mode)
+ (or (eq (char-after) ?`)
+ ;; Special case for Pikes
+ ;; `[]=, since '[' is not in
+ ;; the punctuation class.
+ (and (eq (char-after) ?\[)
+ (eq (char-before) ?`))))
+ nil)
+ ((looking-at "\\s.") 'maybe)
+ ;; make sure we're not in a C++ template
+ ;; argument assignment
+ ((and
+ (c-major-mode-is 'c++-mode)
+ (save-excursion
+ (let ((here (point))
+ (pos< (progn
+ (skip-chars-backward "^<>")
+ (point))))
+ (and (eq (char-before) ?<)
+ (not (c-crosses-statement-barrier-p
+ pos< here))
+ (not (c-in-literal))
+ ))))
+ nil)
+ (t t))))))
+ (if (and (eq braceassignp 'dontknow)
+ (/= (c-backward-token-2 1 t lim) 0))
+ (setq braceassignp nil)))
+ (if (not braceassignp)
+ (if (eq (char-after) ?\;)
+ ;; Brace lists can't contain a semicolon, so we're done.
+ (setq containing-sexp nil)
+ ;; Go up one level.
+ (setq containing-sexp next-containing
+ lim nil
+ next-containing nil))
+ ;; we've hit the beginning of the aggregate list
+ (c-beginning-of-statement-1
+ (c-most-enclosing-brace paren-state))
+ (setq bufpos (point))))
+ )
+ bufpos))
+ ))
+
+;; ==================================================================
+;; end of monkey-patching of basic parsing logic
+;; ==================================================================
+
+
+
+
+;;(easy-menu-define csharp-menu csharp-mode-map "C# Mode Commands"
+;; ;; Can use `csharp' as the language for `c-mode-menu'
+;; ;; since its definition covers any language. In
+;; ;; this case the language is used to adapt to the
+;; ;; nonexistence of a cpp pass and thus removing some
+;; ;; irrelevant menu alternatives.
+;; (cons "C#" (c-lang-const c-mode-menu csharp)))
+
+;;; Autoload mode trigger
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.cs$" . csharp-mode))
+
+
+
+(c-add-style "C#"
+ '("Java"
+ (c-basic-offset . 4)
+ (c-comment-only-line-offset . (0 . 0))
+ (c-offsets-alist . (
+ (access-label . -)
+ (arglist-close . c-lineup-arglist)
+ (arglist-cont . 0)
+ (arglist-cont-nonempty . c-lineup-arglist)
+ (arglist-intro . c-lineup-arglist-intro-after-paren)
+ (block-close . 0)
+ (block-open . 0)
+ (brace-entry-open . 0)
+ (brace-list-close . 0)
+ (brace-list-entry . 0)
+ (brace-list-intro . +)
+ (brace-list-open . +)
+ (c . c-lineup-C-comments)
+ (case-label . +)
+ (catch-clause . 0)
+ (class-close . 0)
+ (class-open . 0)
+ (comment-intro . c-lineup-comment)
+ (cpp-macro . 0)
+ (cpp-macro-cont . c-lineup-dont-change)
+ (defun-block-intro . +)
+ (defun-close . 0)
+ (defun-open . 0)
+ (do-while-closure . 0)
+ (else-clause . 0)
+ (extern-lang-close . 0)
+ (extern-lang-open . 0)
+ (friend . 0)
+ (func-decl-cont . +)
+ (inclass . +)
+ (inexpr-class . +)
+ (inexpr-statement . 0)
+ (inextern-lang . +)
+ (inher-cont . c-lineup-multi-inher)
+ (inher-intro . +)
+ (inlambda . c-lineup-inexpr-block)
+ (inline-close . 0)
+ (inline-open . 0)
+ (innamespace . +)
+ (knr-argdecl . 0)
+ (knr-argdecl-intro . 5)
+ (label . 0)
+ (lambda-intro-cont . +)
+ (member-init-cont . c-lineup-multi-inher)
+ (member-init-intro . +)
+ (namespace-close . 0)
+ (namespace-open . 0)
+ (statement . 0)
+ (statement-block-intro . +)
+ (statement-case-intro . +)
+ (statement-case-open . +)
+ (statement-cont . +)
+ (stream-op . c-lineup-streamop)
+ (string . c-lineup-dont-change)
+ (substatement . +)
+ (substatement-open . 0)
+ (template-args-cont c-lineup-template-args +)
+ (topmost-intro . 0)
+ (topmost-intro-cont . 0)
+ ))
+ ))
+
+
+
+
+;; Custom variables
+;;;###autoload
+(defcustom csharp-mode-hook nil
+ "*Hook called by `csharp-mode'."
+ :type 'hook
+ :group 'c)
+
+
+
+;;; The entry point into the mode
+;;;###autoload
+(defun csharp-mode ()
+ "Major mode for editing C# code. This mode is derived from CC Mode to
+support C#.
+
+The hook `c-mode-common-hook' is run with no args at mode
+initialization, then `csharp-mode-hook'.
+
+This mode will automatically add a regexp for Csc.exe error and warning
+messages to the `compilation-error-regexp-alist'.
+
+Key bindings:
+\\{csharp-mode-map}"
+ (interactive)
+ (kill-all-local-variables)
+ (make-local-variable 'beginning-of-defun-function)
+ (make-local-variable 'end-of-defun-function)
+ (c-initialize-cc-mode t)
+ (set-syntax-table csharp-mode-syntax-table)
+
+ ;; define underscore as part of a word in the Csharp syntax table
+ (modify-syntax-entry ?_ "w" csharp-mode-syntax-table)
+
+ ;; define @ as an expression prefix in Csharp syntax table
+ (modify-syntax-entry ?@ "'" csharp-mode-syntax-table)
+
+ (setq major-mode 'csharp-mode
+ mode-name "C#"
+ local-abbrev-table csharp-mode-abbrev-table
+ abbrev-mode t)
+ (use-local-map csharp-mode-map)
+
+ ;; `c-init-language-vars' is a macro that is expanded at compile
+ ;; time to a large `setq' with all the language variables and their
+ ;; customized values for our language.
+ (c-init-language-vars csharp-mode)
+
+
+ ;; `c-common-init' initializes most of the components of a CC Mode
+ ;; buffer, including setup of the mode menu, font-lock, etc.
+ ;; There's also a lower level routine `c-basic-common-init' that
+ ;; only makes the necessary initialization to get the syntactic
+ ;; analysis and similar things working.
+ (c-common-init 'csharp-mode)
+
+
+ ;; csc.exe, the C# Compiler, produces errors like this:
+ ;; file.cs(6,18): error SC1006: Name of constructor must match name of class
+
+ (add-hook 'compilation-mode-hook
+ (lambda ()
+ (setq compilation-error-regexp-alist
+ (cons ' ("^[ \t]*\\([A-Za-z0-9][^(]+\\.cs\\)(\\([0-9]+\\)[,]\\([0-9]+\\)) ?: \\(error\\|warning\\) CS[0-9]+:" 1 2 3)
+ compilation-error-regexp-alist))))
+
+ ;; to allow next-error to work with csc.exe:
+ (setq compilation-scroll-output t)
+
+ ;; allow fill-paragraph to work on xml code doc
+ (set (make-local-variable 'paragraph-separate)
+ "[ \t]*\\(//+\\|\\**\\)\\([ \t]+\\|[ \t]+<.+?>\\)$\\|^\f")
+
+
+ (c-run-mode-hooks 'c-mode-common-hook 'csharp-mode-hook)
+
+
+ ;; Need the following for parse-partial-sexp to work properly with
+ ;; verbatim literal strings Setting this var to non-nil tells
+ ;; `parse-partial-sexp' to pay attention to the syntax text
+ ;; properties on the text in the buffer. If csharp-mode attaches
+ ;; text syntax to @"..." then, `parse-partial-sexp' will treat those
+ ;; strings accordingly.
+ (set (make-local-variable 'parse-sexp-lookup-properties)
+ t)
+
+ ;; scan the entire buffer for verblit strings
+ (csharp-scan-for-verbatim-literals-and-set-props nil nil)
+
+
+ (local-set-key (kbd "/") 'csharp-maybe-insert-codedoc)
+ (local-set-key (kbd "{") 'csharp-insert-open-brace)
+
+ (c-update-modeline))
+
+
+
+(message (concat "Done loading " load-file-name))
+
+
+(provide 'csharp-mode)
+
+;;; csharp-mode.el ends here
+;;MD5: 4EDCB2ECE38841F407C7ED3DA8354E15
diff --git a/emacs.d/functions.el b/emacs.d/functions.el
new file mode 100644
index 0000000..6472c82
--- /dev/null
+++ b/emacs.d/functions.el
@@ -0,0 +1,45 @@
+(defun what-face (pos)
+ "Find out which face the current position uses"
+ (interactive "d")
+ (let ((face (or (get-char-property (point) 'read-face-name)
+ (get-char-property (point) 'face))))
+ (if face
+ (message "Face: %s" face)
+ (message "No face at %d" pos))))
+
+(defun my-comp-finish-function (buf str)
+ "Don't show compilation window if everything went ok"
+ (if (string-match "exited abnormally" str)
+ ;; there were errors
+ (message "compilation errors, press C-x ` to visit")
+ ;; no errors, make the compilation window go away in 0.5 seconds
+ (run-at-time 0.5 nil 'delete-windows-on bu)
+ (message "NO COMPILATION ERRORS!")))
+
+(defun bh/hide-other ()
+ (interactive)
+ (save-excursion
+ (org-back-to-heading)
+ (org-shifttab)
+ (org-reveal)
+ (org-cycle)))
+
+(defun bh/go-to-scratch ()
+ (interactive)
+ (switch-to-buffer "*scratch*")
+ (delete-other-windows))
+
+(defun bh/untabify ()
+ (interactive)
+ (untabify (point-min) (point-max)))
+
+(defun bh/killframe ()
+ (interactive)
+ (unless (buffer-modified-p)
+ (kill-buffer (current-buffer)))
+ (delete-frame))
+
+(defun show-whitespace ()
+ (whitespace-mode t))
+
+(provide 'functions)
diff --git a/emacs.d/javascript.el b/emacs.d/javascript.el
new file mode 100644
index 0000000..33d852f
--- /dev/null
+++ b/emacs.d/javascript.el
@@ -0,0 +1,707 @@
+;;; javascript.el --- Major mode for editing JavaScript source text
+
+;; Copyright (C) 2006 Karl Landström
+
+;; Author: Karl Landström <kland@comhem.se>
+;; Maintainer: Karl Landström <kland@comhem.se>
+;; Version: 2.0 Beta 8
+;; Date: 2006-12-26
+;; Keywords: languages, oop
+
+;; This file 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 file 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 GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+;;
+;; The main features of this JavaScript mode are syntactic
+;; highlighting (enabled with `font-lock-mode' or
+;; `global-font-lock-mode'), automatic indentation and filling of
+;; comments.
+;;
+;; This package has (only) been tested with GNU Emacs 21.4 (the latest
+;; stable release).
+;;
+;; Installation:
+;;
+;; Put this file in a directory where Emacs can find it (`C-h v
+;; load-path' for more info). Then add the following lines to your
+;; Emacs initialization file:
+;;
+;; (add-to-list 'auto-mode-alist '("\\.js\\'" . javascript-mode))
+;; (autoload 'javascript-mode "javascript" nil t)
+;;
+;; General Remarks:
+;;
+;; This mode assumes that block comments are not nested inside block
+;; comments and that strings do not contain line breaks.
+;;
+;; Exported names start with "javascript-" whereas private names start
+;; with "js-".
+;;
+;; Changes:
+;;
+;; See javascript.el.changelog.
+
+;;; Code:
+
+(require 'cc-mode)
+(require 'font-lock)
+(require 'newcomment)
+
+(defgroup javascript nil
+ "Customization variables for `javascript-mode'."
+ :tag "JavaScript"
+ :group 'languages)
+
+(defcustom javascript-indent-level 4
+ "Number of spaces for each indentation step."
+ :type 'integer
+ :group 'javascript)
+
+(defcustom javascript-auto-indent-flag t
+ "Automatic indentation with punctuation characters. If non-nil, the
+current line is indented when certain punctuations are inserted."
+ :type 'boolean
+ :group 'javascript)
+
+
+;; --- Keymap ---
+
+(defvar javascript-mode-map nil
+ "Keymap used in JavaScript mode.")
+
+(unless javascript-mode-map
+ (setq javascript-mode-map (make-sparse-keymap)))
+
+(when javascript-auto-indent-flag
+ (mapc (lambda (key)
+ (define-key javascript-mode-map key 'javascript-insert-and-indent))
+ '("{" "}" "(" ")" ":" ";" ",")))
+
+(defun javascript-insert-and-indent (key)
+ "Run command bound to key and indent current line. Runs the command
+bound to KEY in the global keymap and indents the current line."
+ (interactive (list (this-command-keys)))
+ (call-interactively (lookup-key (current-global-map) key))
+ (indent-according-to-mode))
+
+
+;; --- Syntax Table And Parsing ---
+
+(defvar javascript-mode-syntax-table
+ (let ((table (make-syntax-table)))
+ (c-populate-syntax-table table)
+
+ ;; The syntax class of underscore should really be `symbol' ("_")
+ ;; but that makes matching of tokens much more complex as e.g.
+ ;; "\\<xyz\\>" matches part of e.g. "_xyz" and "xyz_abc". Defines
+ ;; it as word constituent for now.
+ (modify-syntax-entry ?_ "w" table)
+
+ table)
+ "Syntax table used in JavaScript mode.")
+
+
+(defun js-re-search-forward-inner (regexp &optional bound count)
+ "Auxiliary function for `js-re-search-forward'."
+ (let ((parse)
+ (saved-point (point-min)))
+ (while (> count 0)
+ (re-search-forward regexp bound)
+ (setq parse (parse-partial-sexp saved-point (point)))
+ (cond ((nth 3 parse)
+ (re-search-forward
+ (concat "\\([^\\]\\|^\\)" (string (nth 3 parse)))
+ (save-excursion (end-of-line) (point)) t))
+ ((nth 7 parse)
+ (forward-line))
+ ((or (nth 4 parse)
+ (and (eq (char-before) ?\/) (eq (char-after) ?\*)))
+ (re-search-forward "\\*/"))
+ (t
+ (setq count (1- count))))
+ (setq saved-point (point))))
+ (point))
+
+
+(defun js-re-search-forward (regexp &optional bound noerror count)
+ "Search forward but ignore strings and comments. Invokes
+`re-search-forward' but treats the buffer as if strings and
+comments have been removed."
+ (let ((saved-point (point))
+ (search-expr
+ (cond ((null count)
+ '(js-re-search-forward-inner regexp bound 1))
+ ((< count 0)
+ '(js-re-search-backward-inner regexp bound (- count)))
+ ((> count 0)
+ '(js-re-search-forward-inner regexp bound count)))))
+ (condition-case err
+ (eval search-expr)
+ (search-failed
+ (goto-char saved-point)
+ (unless noerror
+ (error (error-message-string err)))))))
+
+
+(defun js-re-search-backward-inner (regexp &optional bound count)
+ "Auxiliary function for `js-re-search-backward'."
+ (let ((parse)
+ (saved-point (point-min)))
+ (while (> count 0)
+ (re-search-backward regexp bound)
+ (when (and (> (point) (point-min))
+ (save-excursion (backward-char) (looking-at "/[/*]")))
+ (forward-char))
+ (setq parse (parse-partial-sexp saved-point (point)))
+ (cond ((nth 3 parse)
+ (re-search-backward
+ (concat "\\([^\\]\\|^\\)" (string (nth 3 parse)))
+ (save-excursion (beginning-of-line) (point)) t))
+ ((nth 7 parse)
+ (goto-char (nth 8 parse)))
+ ((or (nth 4 parse)
+ (and (eq (char-before) ?/) (eq (char-after) ?*)))
+ (re-search-backward "/\\*"))
+ (t
+ (setq count (1- count))))))
+ (point))
+
+
+(defun js-re-search-backward (regexp &optional bound noerror count)
+ "Search backward but ignore strings and comments. Invokes
+`re-search-backward' but treats the buffer as if strings and
+comments have been removed."
+ (let ((saved-point (point))
+ (search-expr
+ (cond ((null count)
+ '(js-re-search-backward-inner regexp bound 1))
+ ((< count 0)
+ '(js-re-search-forward-inner regexp bound (- count)))
+ ((> count 0)
+ '(js-re-search-backward-inner regexp bound count)))))
+ (condition-case err
+ (eval search-expr)
+ (search-failed
+ (goto-char saved-point)
+ (unless noerror
+ (error (error-message-string err)))))))
+
+
+(defun js-continued-var-decl-list-p ()
+ "Return non-nil if point is inside a continued variable declaration
+list."
+ (interactive)
+ (let ((start (save-excursion (js-re-search-backward "\\<var\\>" nil t))))
+ (and start
+ (save-excursion (re-search-backward "\n" start t))
+ (not (save-excursion
+ (js-re-search-backward
+ ";\\|[^, \t][ \t]*\\(/[/*]\\|$\\)" start t))))))
+
+
+;; --- Font Lock ---
+
+(defun js-inside-param-list-p ()
+ "Return non-nil if point is inside a function parameter list."
+ (condition-case err
+ (save-excursion
+ (up-list -1)
+ (and (looking-at "(")
+ (progn (backward-word 1)
+ (or (looking-at "function")
+ (progn (backward-word 1) (looking-at "function"))))))
+ (error nil)))
+
+
+(defconst js-function-heading-1-re
+ "^[ \t]*function[ \t]+\\(\\w+\\)"
+ "Regular expression matching the start of a function header.")
+
+(defconst js-function-heading-2-re
+ "^[ \t]*\\(\\w+\\)[ \t]*:[ \t]*function\\>"
+ "Regular expression matching the start of a function entry in
+ an associative array.")
+
+(defconst js-keyword-re
+ (regexp-opt '("abstract" "break" "case" "catch" "class" "const"
+ "continue" "debugger" "default" "delete" "do" "else"
+ "enum" "export" "extends" "final" "finally" "for"
+ "function" "goto" "if" "implements" "import" "in"
+ "instanceof" "interface" "native" "new" "package"
+ "private" "protected" "public" "return" "static"
+ "super" "switch" "synchronized" "this" "throw"
+ "throws" "transient" "try" "typeof" "var" "void"
+ "volatile" "while" "with"
+ "let") 'words)
+ "Regular expression matching any JavaScript keyword.")
+
+(defconst js-basic-type-re
+ (regexp-opt '("boolean" "byte" "char" "double" "float" "int" "long"
+ "short" "void") 'words)
+ "Regular expression matching any predefined type in JavaScript.")
+
+(defconst js-constant-re
+ (regexp-opt '("false" "null" "true") 'words)
+ "Regular expression matching any future reserved words in JavaScript.")
+
+
+(defconst js-font-lock-keywords-1
+ (list
+ "\\<import\\>"
+ (list js-function-heading-1-re 1 font-lock-function-name-face)
+ (list js-function-heading-2-re 1 font-lock-function-name-face)
+ (list "[=(][ \t]*\\(/.*?[^\\]/\\w*\\)" 1 font-lock-string-face))
+ "Level one font lock.")
+
+(defconst js-font-lock-keywords-2
+ (append js-font-lock-keywords-1
+ (list (list js-keyword-re 1 font-lock-keyword-face)
+ (cons js-basic-type-re font-lock-type-face)
+ (cons js-constant-re font-lock-constant-face)))
+ "Level two font lock.")
+
+
+;; Limitations with variable declarations: There seems to be no
+;; sensible way to highlight variables occuring after an initialized
+;; variable in a variable list. For instance, in
+;;
+;; var x, y = f(a, b), z
+;;
+;; z will not be highlighted.
+
+(defconst js-font-lock-keywords-3
+ (append
+ js-font-lock-keywords-2
+ (list
+
+ ;; variable declarations
+ (list
+ (concat "\\<\\(const\\|var\\)\\>\\|" js-basic-type-re)
+ (list "\\(\\w+\\)[ \t]*\\([=;].*\\|,\\|/[/*]\\|$\\)"
+ nil
+ nil
+ '(1 font-lock-variable-name-face)))
+
+ ;; continued variable declaration list
+ (list
+ (concat "^[ \t]*\\w+[ \t]*\\([,;=]\\|/[/*]\\|$\\)")
+ (list "\\(\\w+\\)[ \t]*\\([=;].*\\|,\\|/[/*]\\|$\\)"
+ '(if (save-excursion (backward-char) (js-continued-var-decl-list-p))
+ (backward-word 1)
+ (end-of-line))
+ '(end-of-line)
+ '(1 font-lock-variable-name-face)))
+
+ ;; formal parameters
+ (list
+ (concat "\\<function\\>\\([ \t]+\\w+\\)?[ \t]*([ \t]*\\w")
+ (list "\\(\\w+\\)\\([ \t]*).*\\)?"
+ '(backward-char)
+ '(end-of-line)
+ '(1 font-lock-variable-name-face)))
+
+ ;; continued formal parameter list
+ (list
+ (concat "^[ \t]*\\w+[ \t]*[,)]")
+ (list "\\w+"
+ '(if (save-excursion (backward-char) (js-inside-param-list-p))
+ (backward-word 1)
+ (end-of-line))
+ '(end-of-line)
+ '(0 font-lock-variable-name-face)))))
+ "Level three font lock.")
+
+(defconst js-font-lock-keywords
+ '(js-font-lock-keywords-3 js-font-lock-keywords-1 js-font-lock-keywords-2
+ js-font-lock-keywords-3)
+ "See `font-lock-keywords'.")
+
+
+;; --- Indentation ---
+
+(defconst js-possibly-braceless-keyword-re
+ (regexp-opt
+ '("catch" "do" "else" "finally" "for" "if" "try" "while" "with" "let")
+ 'words)
+ "Regular expression matching keywords that are optionally
+ followed by an opening brace.")
+
+(defconst js-indent-operator-re
+ (concat "[-+*/%<>=&^|?:.]\\([^-+*/]\\|$\\)\\|"
+ (regexp-opt '("in" "instanceof") 'words))
+ "Regular expression matching operators that affect indentation
+ of continued expressions.")
+
+
+(defun js-looking-at-operator-p ()
+ "Return non-nil if text after point is an operator (that is not
+a comma)."
+ (save-match-data
+ (and (looking-at js-indent-operator-re)
+ (or (not (looking-at ":"))
+ (save-excursion
+ (and (js-re-search-backward "[?:{]\\|\\<case\\>" nil t)
+ (looking-at "?")))))))
+
+
+(defun js-continued-expression-p ()
+ "Returns non-nil if the current line continues an expression."
+ (save-excursion
+ (back-to-indentation)
+ (or (js-looking-at-operator-p)
+ (and (js-re-search-backward "\n" nil t)
+ (progn
+ (skip-chars-backward " \t")
+ (backward-char)
+ (and (> (point) (point-min))
+ (save-excursion (backward-char) (not (looking-at "[/*]/")))
+ (js-looking-at-operator-p)
+ (and (progn (backward-char)
+ (not (looking-at "++\\|--\\|/[/*]"))))))))))
+
+
+(defun js-end-of-do-while-loop-p ()
+ "Returns non-nil if word after point is `while' of a do-while
+statement, else returns nil. A braceless do-while statement
+spanning several lines requires that the start of the loop is
+indented to the same column as the current line."
+ (interactive)
+ (save-excursion
+ (save-match-data
+ (when (looking-at "\\s-*\\<while\\>")
+ (if (save-excursion
+ (skip-chars-backward "[ \t\n]*}")
+ (looking-at "[ \t\n]*}"))
+ (save-excursion
+ (backward-list) (backward-word 1) (looking-at "\\<do\\>"))
+ (js-re-search-backward "\\<do\\>" (point-at-bol) t)
+ (or (looking-at "\\<do\\>")
+ (let ((saved-indent (current-indentation)))
+ (while (and (js-re-search-backward "^[ \t]*\\<" nil t)
+ (/= (current-indentation) saved-indent)))
+ (and (looking-at "[ \t]*\\<do\\>")
+ (not (js-re-search-forward
+ "\\<while\\>" (point-at-eol) t))
+ (= (current-indentation) saved-indent)))))))))
+
+
+(defun js-ctrl-statement-indentation ()
+ "Returns the proper indentation of the current line if it
+starts the body of a control statement without braces, else
+returns nil."
+ (save-excursion
+ (back-to-indentation)
+ (when (save-excursion
+ (and (not (looking-at "[{]"))
+ (progn
+ (js-re-search-backward "[[:graph:]]" nil t)
+ (forward-char)
+ (when (= (char-before) ?\)) (backward-list))
+ (skip-syntax-backward " ")
+ (skip-syntax-backward "w")
+ (looking-at js-possibly-braceless-keyword-re))
+ (not (js-end-of-do-while-loop-p))))
+ (save-excursion
+ (goto-char (match-beginning 0))
+ (+ (current-indentation) javascript-indent-level)))))
+
+
+(defun js-proper-indentation (parse-status)
+ "Return the proper indentation for the current line."
+ (save-excursion
+ (back-to-indentation)
+ (let ((ctrl-stmt-indent (js-ctrl-statement-indentation))
+ (same-indent-p (looking-at "[]})]\\|\\<case\\>\\|\\<default\\>"))
+ (continued-expr-p (js-continued-expression-p)))
+ (cond (ctrl-stmt-indent)
+ ((js-continued-var-decl-list-p)
+ (js-re-search-backward "\\<var\\>" nil t)
+ (+ (current-indentation) javascript-indent-level))
+ ((nth 1 parse-status)
+ (goto-char (nth 1 parse-status))
+ (if (looking-at "[({[][ \t]*\\(/[/*]\\|$\\)")
+ (progn
+ (skip-syntax-backward " ")
+ (when (= (char-before) ?\)) (backward-list))
+ (back-to-indentation)
+ (cond (same-indent-p
+ (current-column))
+ (continued-expr-p
+ (+ (current-column) (* 2 javascript-indent-level)))
+ (t
+ (+ (current-column) javascript-indent-level))))
+ (unless same-indent-p
+ (forward-char)
+ (skip-chars-forward " \t"))
+ (current-column)))
+ (continued-expr-p javascript-indent-level)
+ (t 0)))))
+
+
+(defun javascript-indent-line ()
+ "Indent the current line as JavaScript source text."
+ (interactive)
+ (let ((parse-status
+ (save-excursion (parse-partial-sexp (point-min) (point-at-bol))))
+ (offset (- (current-column) (current-indentation))))
+ (when (not (nth 8 parse-status))
+ (indent-line-to (js-proper-indentation parse-status))
+ (when (> offset 0) (forward-char offset)))))
+
+
+;; --- Filling ---
+
+;; FIXME: It should be possible to use the more sofisticated function
+;; `c-fill-paragraph' in `cc-cmds.el' instead. However, just setting
+;; `fill-paragraph-function' to `c-fill-paragraph' does not work;
+;; inside `c-fill-paragraph', `fill-paragraph-function' evaluates to
+;; nil!?
+
+(defun js-backward-paragraph ()
+ "Move backward to start of paragraph. Postcondition: Point is at
+beginning of buffer or the previous line contains only whitespace."
+ (forward-line -1)
+ (while (not (or (bobp) (looking-at "^[ \t]*$")))
+ (forward-line -1))
+ (when (not (bobp)) (forward-line 1)))
+
+
+(defun js-forward-paragraph ()
+ "Move forward to end of paragraph. Postcondition: Point is at
+end of buffer or the next line contains only whitespace."
+ (forward-line 1)
+ (while (not (or (eobp) (looking-at "^[ \t]*$")))
+ (forward-line 1))
+ (when (not (eobp)) (backward-char 1)))
+
+
+(defun js-fill-block-comment-paragraph (parse-status justify)
+ "Fill current paragraph as a block comment. PARSE-STATUS is the
+result of `parse-partial-regexp' from beginning of buffer to
+point. JUSTIFY has the same meaning as in `fill-paragraph'."
+ (let ((offset (save-excursion
+ (goto-char (nth 8 parse-status)) (current-indentation))))
+ (save-excursion
+ (save-restriction
+ (narrow-to-region (save-excursion
+ (goto-char (nth 8 parse-status)) (point-at-bol))
+ (save-excursion
+ (goto-char (nth 8 parse-status))
+ (re-search-forward "*/")))
+ (narrow-to-region (save-excursion
+ (js-backward-paragraph)
+ (when (looking-at "^[ \t]*$") (forward-line 1))
+ (point))
+ (save-excursion
+ (js-forward-paragraph)
+ (when (looking-at "^[ \t]*$") (backward-char))
+ (point)))
+ (goto-char (point-min))
+ (while (not (eobp))
+ (delete-horizontal-space)
+ (forward-line 1))
+ (let ((fill-column (- fill-column offset))
+ (fill-paragraph-function nil))
+ (fill-paragraph justify))
+
+ ;; In Emacs 21.4 as opposed to CVS Emacs 22,
+ ;; `fill-paragraph' seems toadd a newline at the end of the
+ ;; paragraph. Remove it!
+ (goto-char (point-max))
+ (when (looking-at "^$") (backward-delete-char 1))
+
+ (goto-char (point-min))
+ (while (not (eobp))
+ (indent-to offset)
+ (forward-line 1))))))
+
+
+(defun js-sline-comment-par-start ()
+ "Return point at the beginning of the line where the current
+single-line comment paragraph starts."
+ (save-excursion
+ (beginning-of-line)
+ (while (and (not (bobp))
+ (looking-at "^[ \t]*//[ \t]*[[:graph:]]"))
+ (forward-line -1))
+ (unless (bobp) (forward-line 1))
+ (point)))
+
+
+(defun js-sline-comment-par-end ()
+ "Return point at end of current single-line comment paragraph."
+ (save-excursion
+ (beginning-of-line)
+ (while (and (not (eobp))
+ (looking-at "^[ \t]*//[ \t]*[[:graph:]]"))
+ (forward-line 1))
+ (unless (bobp) (backward-char))
+ (point)))
+
+
+(defun js-sline-comment-offset (line)
+ "Return the column at the start of the current single-line
+comment paragraph."
+ (save-excursion
+ (goto-line line)
+ (re-search-forward "//" (point-at-eol))
+ (goto-char (match-beginning 0))
+ (current-column)))
+
+
+(defun js-sline-comment-text-offset (line)
+ "Return the column at the start of the text of the current
+single-line comment paragraph."
+ (save-excursion
+ (goto-line line)
+ (re-search-forward "//[ \t]*" (point-at-eol))
+ (current-column)))
+
+
+(defun js-at-empty-sline-comment-p ()
+ "Return non-nil if inside an empty single-line comment."
+ (and (save-excursion
+ (beginning-of-line)
+ (not (looking-at "^.*//.*[[:graph:]]")))
+ (save-excursion
+ (re-search-backward "//" (point-at-bol) t))))
+
+
+(defun js-fill-sline-comments (parse-status justify)
+ "Fill current paragraph as a sequence of single-line comments.
+PARSE-STATUS is the result of `parse-partial-regexp' from
+beginning of buffer to point. JUSTIFY has the same meaning as in
+`fill-paragraph'."
+ (when (not (js-at-empty-sline-comment-p))
+ (let* ((start (js-sline-comment-par-start))
+ (start-line (1+ (count-lines (point-min) start)))
+ (end (js-sline-comment-par-end))
+ (offset (js-sline-comment-offset start-line))
+ (text-offset (js-sline-comment-text-offset start-line)))
+ (save-excursion
+ (save-restriction
+ (narrow-to-region start end)
+ (goto-char (point-min))
+ (while (re-search-forward "^[ \t]*//[ \t]*" nil t)
+ (replace-match "")
+ (forward-line 1))
+ (let ((fill-paragraph-function nil)
+ (fill-column (- fill-column text-offset)))
+ (fill-paragraph justify))
+
+ ;; In Emacs 21.4 as opposed to CVS Emacs 22,
+ ;; `fill-paragraph' seems toadd a newline at the end of the
+ ;; paragraph. Remove it!
+ (goto-char (point-max))
+ (when (looking-at "^$") (backward-delete-char 1))
+
+ (goto-char (point-min))
+ (while (not (eobp))
+ (indent-to offset)
+ (insert "//")
+ (indent-to text-offset)
+ (forward-line 1)))))))
+
+
+(defun js-trailing-comment-p (parse-status)
+ "Return non-nil if inside a trailing comment. PARSE-STATUS is
+the result of `parse-partial-regexp' from beginning of buffer to
+point."
+ (save-excursion
+ (when (nth 4 parse-status)
+ (goto-char (nth 8 parse-status))
+ (skip-chars-backward " \t")
+ (not (bolp)))))
+
+
+(defun js-block-comment-p (parse-status)
+ "Return non-nil if inside a block comment. PARSE-STATUS is the
+result of `parse-partial-regexp' from beginning of buffer to
+point."
+ (save-excursion
+ (save-match-data
+ (when (nth 4 parse-status)
+ (goto-char (nth 8 parse-status))
+ (looking-at "/\\*")))))
+
+
+(defun javascript-fill-paragraph (&optional justify)
+ "If inside a comment, fill the current comment paragraph.
+Trailing comments are ignored."
+ (interactive)
+ (let ((parse-status (parse-partial-sexp (point-min) (point))))
+ (when (and (nth 4 parse-status)
+ (not (js-trailing-comment-p parse-status)))
+ (if (js-block-comment-p parse-status)
+ (js-fill-block-comment-paragraph parse-status justify)
+ (js-fill-sline-comments parse-status justify))))
+ t)
+
+
+;; --- Imenu ---
+
+(defconst js-imenu-generic-expression
+ (list
+ (list
+ nil
+ "function\\s-+\\(\\w+\\)\\s-*("
+ 1))
+ "Regular expression matching top level procedures. Used by imenu.")
+
+
+;; --- Main Function ---
+
+;;;###autoload
+(defun javascript-mode ()
+ "Major mode for editing JavaScript source text.
+
+Key bindings:
+
+\\{javascript-mode-map}"
+ (interactive)
+ (kill-all-local-variables)
+
+ (use-local-map javascript-mode-map)
+ (set-syntax-table javascript-mode-syntax-table)
+ (set (make-local-variable 'indent-line-function) 'javascript-indent-line)
+ (set (make-local-variable 'font-lock-defaults) (list js-font-lock-keywords))
+
+ (set (make-local-variable 'parse-sexp-ignore-comments) t)
+
+ ;; Comments
+ (setq comment-start "// ")
+ (setq comment-end "")
+ (set (make-local-variable 'fill-paragraph-function)
+ 'javascript-fill-paragraph)
+
+ ;; Make c-mark-function work
+ (setq c-nonsymbol-token-regexp "!=\\|%=\\|&[&=]\\|\\*[/=]\\|\\+[+=]\\|-[=-]\\|/[*/=]\\|<\\(?:<=\\|[<=]\\)\\|==\\|>\\(?:>\\(?:>=\\|[=>]\\)\\|[=>]\\)\\|\\^=\\||[=|]\\|[]!%&(-,./:-?[{-~^-]"
+ c-stmt-delim-chars "^;{}?:"
+ c-syntactic-ws-end "[ \n \f/]"
+ c-syntactic-eol "\\(\\s \\|/\\*\\([^*\n ]\\|\\*[^/\n ]\\)*\\*/\\)*\\(\\(/\\*\\([^*\n ]\\|\\*[^/\n ]\\)*\\|\\\\\\)?$\\|//\\)")
+
+ ;; Imenu
+ (setq imenu-case-fold-search nil)
+ (set (make-local-variable 'imenu-generic-expression)
+ js-imenu-generic-expression)
+
+ (setq major-mode 'javascript-mode)
+ (setq mode-name "JavaScript")
+ (run-hooks 'javascript-mode-hook))
+
+
+(provide 'javascript-mode)
+;;; javascript.el ends here
diff --git a/emacs.d/manage-org.el b/emacs.d/manage-org.el
new file mode 100644
index 0000000..1b2b5bb
--- /dev/null
+++ b/emacs.d/manage-org.el
@@ -0,0 +1,40 @@
+(defun clone-org-files ()
+ (interactive)
+ (if (= (shell-command
+ "git clone git@82.170.172.156:private/org.git ~/prj/org"
+ "*Messages*" "*Messages*") 0)
+ (message "success!")
+ (message "failed!")))
+
+(defun get-org-files ()
+ (interactive)
+ (let ((prev-dir (getenv "PWD")))
+ (if (= (shell-command
+ (format "cd ~/prj/org/; git pull origin master; cd %s" prev-dir)
+ "*Messages*" "*Messages*") 0)
+ (message "success!")
+ (message "failed!"))))
+
+(defun save-org-files ()
+ (interactive)
+ (let ((prev-dir (getenv "PWD")))
+ (if (= (shell-command
+ (format
+ "cd ~/prj/org/; git add .; git commit -m \"Change for %s\"; cd %s"
+ (format-time-string "%Y-%m-%d at %H:%M:%S")
+ prev-dir)
+ "*Messages*" "*Messages*") 0)
+ (message "success!")
+ (message "failed!"))))
+
+(defun push-org-files ()
+ (interactive)
+ (let ((prev-dir (getenv "PWD")))
+ (if (= (shell-command
+ (format
+ "cd ~/prj/org/; git push origin master; cd %s" prev-dir)
+ "*Messages*" "*Messages*") 0)
+ (message "success!")
+ (message "failed!"))))
+
+(provide 'manage-org)
diff --git a/emacs.d/minimap.el b/emacs.d/minimap.el
new file mode 100644
index 0000000..69db8b1
--- /dev/null
+++ b/emacs.d/minimap.el
@@ -0,0 +1,630 @@
+;;; minimap.el --- Minimap sidebar for Emacs
+
+;; Copyright (C) 2009, 2010 David Engster
+
+;; Author: David Engster <dengste@eml.cc>
+;; Keywords:
+;; Version: 0.7
+
+;; This file is NOT part of GNU Emacs.
+
+;; 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
+;; of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file is an implementation of a minimap sidebar, i.e., a
+;; smaller display of the current buffer on the left side. It
+;; highlights the currently shown region and updates its position
+;; automatically. You can navigate in the minibar by dragging the
+;; active region with the mouse, which will scroll the corresponding
+;; edit buffer.
+
+;; Usage:
+;; * Put minimap.el in your load path.
+;; * (require 'minimap)
+;; * Use 'M-x minimap-create' in a buffer you're currently editing.
+;; * Use 'M-x minimap-kill' to kill the minimap.
+;; * Use 'M-x customize-group RET minimap RET' to adapt minimap to your needs.
+
+;; Download:
+;; You can always get the latest version from the git repository:
+;; git://randomsample.de/minimap.git
+;; or http://randomsample.de/minimap.git
+
+;;; KNOWN BUGS:
+
+;; * Currently cannot deal with images.
+;; * Display/movement can be a bit erratic at times.
+
+;;; TODO:
+
+;; * Fix known bugs.
+;; * Make sidebar permanently visible. This requires something like a
+;; 'window group' feature in Emacs, which is currently being worked on.
+;; * Moving the active region with the keyboard / mouse-wheel ?
+
+
+;;; Customizable variables:
+
+(defgroup minimap nil
+ "A minimap sidebar for Emacs."
+ :group 'convenience)
+
+(defface minimap-font-face
+ '((default :family "DejaVu Sans Mono" :height 30))
+ "Face used for text in minimap buffer, notably the font family and height.
+This height should be really small. You probably want to use a
+TrueType font for this. After changing this, you should
+recreate the minimap to avoid problems with recentering."
+ :group 'minimap)
+
+(defface minimap-active-region-background
+ '((((background dark)) (:background "#4517305D0000"))
+ (t (:background "#C847D8FEFFFF")))
+ "Face for the active region in the minimap.
+By default, this is only a different background color."
+ :group 'minimap)
+
+(defface minimap-semantic-function-face
+ '((((background dark))
+ (:box (:line-width 1 :color "white")
+ :inherit (font-lock-function-name-face minimap-font-face)
+ :height 2.5 :background "gray10"))
+ (t (:box (:line-width 1 :color "black")
+ :inherit (font-lock-function-name-face minimap-font-face)
+ :height 2.5 :background "gray90")))
+ "Face used for functions in the semantic overlay.")
+
+(defface minimap-semantic-variable-face
+ '((((background dark))
+ (:box (:line-width 1 :color "white")
+ :inherit (font-lock-variable-name-face minimap-font-face)
+ :height 2.5 :background "gray10"))
+ (t (:box (:line-width 1 :color "black")
+ :inherit (font-lock-function-name-face minimap-font-face)
+ :height 2.5 :background "gray90")))
+ "Face used for variables in the semantic overlay.")
+
+(defface minimap-semantic-type-face
+ '((((background dark))
+ (:box (:line-width 1 :color "white")
+ :inherit (font-lock-type-face minimap-font-face)
+ :height 2.5 :background "gray10"))
+ (t (:box (:line-width 1 :color "black")
+ :inherit (font-lock-function-name-face minimap-font-face)
+ :height 2.5 :background "gray90")))
+ "Face used for types in the semantic overlay.")
+
+(defcustom minimap-width-fraction 0.2
+ "Fraction of width which should be used for minimap sidebar."
+ :type 'number
+ :group 'minimap)
+
+(defcustom minimap-window-location 'left
+ "Location of the minimap window.
+Can be either the symbol `left' or `right'."
+ :type '(choice (const :tag "Left" left)
+ (const :tag "Right" right))
+ :group 'minimap)
+
+(defcustom minimap-buffer-name-prefix "*MINIMAP* "
+ "Prefix for buffer names of minimap sidebar."
+ :type 'string
+ :group 'minimap)
+
+(defcustom minimap-update-delay 0.2
+ "Delay in seconds after which sidebar gets updated.
+Setting this to 0 will let the minimap react immediately, but
+this will slow down scrolling."
+ :type 'number
+ :set (lambda (sym value)
+ (set sym value)
+ (when (and (boundp 'minimap-timer-object)
+ minimap-timer-object)
+ (cancel-timer minimap-timer-object)
+ (setq minimap-timer-object
+ (run-with-idle-timer
+ minimap-update-delay t 'minimap-update))))
+ :group 'minimap)
+
+(defcustom minimap-always-recenter nil
+ "Whether minimap sidebar should be recentered after every point movement."
+ :type 'boolean
+ :group 'minimap)
+
+(defcustom minimap-recenter-type 'relative
+ "Specifies the type of recentering the minimap should use.
+The minimap can use different types of recentering, i.e., how the
+minimap should behave when you scroll in the main window or when
+you drag the active region with the mouse. The following
+explanations will probably not help much, so simply try them and
+choose the one which suits you best.
+
+`relative' -- The position of the active region in the minimap
+corresponds with the relative position of this region in the
+buffer. This the default.
+
+`middle' -- The active region will stay fixed in the middle of
+the minimap.
+
+`free' -- The position will be more or less free. When dragging
+the active region, the minimap will scroll when you reach the
+bottom or top."
+ :type '(choice (const :tag "Relative" relative)
+ (const :tag "Middle" middle)
+ (const :tag "Free" free))
+ :group 'minimap)
+
+(defcustom minimap-hide-scroll-bar t
+ "Whether the minimap should hide the vertical scrollbar."
+ :type 'boolean
+ :group 'minimap)
+
+(defcustom minimap-hide-fringes t
+ "Whether the minimap should hide the fringes."
+ :type 'boolean
+ :group 'minimap)
+
+(defcustom minimap-dedicated-window nil
+ "Whether the minimap should create a dedicated window."
+ :type 'boolean
+ :group 'minimap)
+
+(defcustom minimap-display-semantic-overlays t
+ "Display overlays from CEDET's semantic analyzer.
+If you use CEDET and the buffer's major-mode is supported, the
+minimap can display overlays generated by the semantic analyzer.
+By default, it will apply the faces `minimap-semantic-<X>-face',
+with <X> being \"function\", \"variable\" and \"type\". Also, it
+will display the name of the tag in the middle of the overlay in
+the corresponding font-lock face.
+
+See also `minimap-enlarge-certain-faces', which can be used as
+fallback."
+ :type 'boolean
+ :group 'minimap)
+
+(defcustom minimap-enlarge-certain-faces 'as-fallback
+ "Whether certain faces should be enlarged in the minimap.
+All faces listed in `minimap-normal-height-faces' will be
+displayed using the default font height, allowing you to still
+read text using those faces. By default, this should enlarge all
+function names in the minimap, given you have font locking
+enabled. This variable can have the following values:
+
+'as-fallback (the default) -- The feature will only be activated
+ if information from CEDET's semantic analyzer isn't available
+ (see: `minimap-display-semantic-overlays').
+'always -- Always active.
+nil -- Inactive."
+ :type '(choice (const :tag "Fallback if CEDET unavailable." 'as-fallback)
+ (const :tag "Always active." 'always)
+ (const :tag "Inactive." nil))
+ :group 'minimap)
+
+(defcustom minimap-normal-height-faces '(font-lock-function-name-face)
+ "List of faces which should be displayed with normal height.
+When `minimap-enlarge-certain-faces' is non-nil, all faces in
+this list will be displayed using the default font height. By
+default, this list contains `font-lock-function-name-face', so
+you can still read function names in the minimap."
+ :type '(repeat face)
+ :group 'minimap)
+
+(defcustom minimap-sync-overlay-properties '(face invisible)
+ "Specifies which overlay properties should be synced.
+Unlike text properties, overlays are not applied automatically to
+the minimap and must be explicitly synced. This variable
+specifies which overlay properties should be synced by
+`minimap-sync-overlays'. Most importantly, this variable should
+include 'invisible', so that hidden text does not appear in the
+minimap buffer."
+ :type '(repeat symbol)
+ :group 'minimap)
+
+;;; Internal variables
+
+(defvar minimap-start nil)
+(defvar minimap-end nil)
+(defvar minimap-active-overlay nil)
+(defvar minimap-bufname nil)
+(defvar minimap-timer-object nil)
+(defvar minimap-active-minimaps 0)
+(defvar minimap-base-overlay nil)
+(defvar minimap-numlines nil)
+(defvar minimap-pointmin-overlay nil)
+
+(make-variable-buffer-local 'minimap-start)
+(make-variable-buffer-local 'minimap-end)
+(make-variable-buffer-local 'minimap-active-overlay)
+(make-variable-buffer-local 'minimap-bufname)
+(make-variable-buffer-local 'minimap-base-overlay)
+(make-variable-buffer-local 'minimap-numlines)
+(make-variable-buffer-local 'minimap-pointmin-overlay)
+
+;;; Minimap creation / killing
+
+;;;###autoload
+(defun minimap-create ()
+ "Create a minimap sidebar for the current window."
+ (interactive)
+ ;; If minimap is visible, do nothing.
+ (unless (and minimap-bufname
+ (get-buffer minimap-bufname)
+ (get-buffer-window (get-buffer minimap-bufname)))
+ (let ((bufname (concat minimap-buffer-name-prefix
+ (buffer-name (current-buffer))))
+ (new-win (if (eq minimap-window-location 'left)
+ (split-window-horizontally
+ (round (* (window-width)
+ minimap-width-fraction)))
+ (split-window-horizontally
+ (round (* (window-width)
+ (- 1 minimap-width-fraction))))
+ (other-window 1))))
+ ;; If minimap exists but isn't visible, reuse it.
+ (if (and minimap-bufname
+ (get-buffer minimap-bufname))
+ (switch-to-buffer minimap-bufname t)
+ ;; Otherwise create new minimap
+ (minimap-new-minimap bufname)
+ ;; If this is the first minimap, create the idle timer.
+ (when (zerop minimap-active-minimaps)
+ (setq minimap-timer-object
+ (run-with-idle-timer minimap-update-delay t 'minimap-update)))
+ (setq minimap-active-minimaps
+ (1+ minimap-active-minimaps))))
+ (other-window 1)
+ (minimap-sync-overlays)))
+
+(defun minimap-new-minimap (bufname)
+ "Create new minimap BUFNAME for current buffer and window."
+ (let ((indbuf (make-indirect-buffer (current-buffer) bufname t))
+ (edges (window-pixel-edges)))
+ (setq minimap-bufname bufname)
+ (set-buffer indbuf)
+ (when minimap-hide-scroll-bar
+ (setq vertical-scroll-bar nil))
+ (switch-to-buffer indbuf)
+ (setq minimap-base-overlay (make-overlay (point-min) (point-max) nil t t))
+ (overlay-put minimap-base-overlay 'face 'minimap-font-face)
+ (overlay-put minimap-base-overlay 'priority 1)
+ (setq minimap-pointmin-overlay (make-overlay (point-min) (1+ (point-min))))
+ (setq minimap-start (window-start)
+ minimap-end (window-end)
+ minimap-active-overlay (make-overlay minimap-start minimap-end)
+ line-spacing 0)
+ (overlay-put minimap-active-overlay 'face
+ 'minimap-active-region-background)
+ (overlay-put minimap-active-overlay 'priority 5)
+ (minimap-mode 1)
+ (when (and (boundp 'linum-mode)
+ linum-mode)
+ (linum-mode 0))
+ (when minimap-hide-fringes
+ (set-window-fringes nil 0 0))
+ (when minimap-dedicated-window
+ (set-window-dedicated-p nil t))
+ (setq buffer-read-only t)
+ ;; Calculate the actual number of lines displayable with the minimap face.
+ (setq minimap-numlines
+ (floor
+ (/
+ (- (nth 3 edges) (nth 1 edges))
+ (car (progn (redisplay) (window-line-height))))))))
+
+;;;###autoload
+(defun minimap-kill ()
+ "Kill minimap for current buffer.
+Cancel the idle timer if no more minimaps are active."
+ (interactive)
+ (if (null minimap-bufname)
+ (message "No minimap associated with %s." (buffer-name (current-buffer)))
+ (let ((curname (buffer-name (current-buffer)))
+ (buf (get-buffer minimap-bufname))
+ (win (get-buffer-window minimap-bufname)))
+ (setq minimap-bufname nil)
+ (if (null buf)
+ (message "No minimap associated with %s." curname)
+ (when win
+ (delete-window win))
+ (kill-buffer buf)
+ (when (zerop
+ (setq minimap-active-minimaps
+ (1- minimap-active-minimaps)))
+ (cancel-timer minimap-timer-object)
+ (setq minimap-timer-object nil))
+ (message "Minimap for %s killed." curname)))))
+
+;;; Minimap update
+
+(defun minimap-update (&optional force)
+ "Update minimap sidebar if necessary.
+This is meant to be called from the idle-timer or the post command hook.
+When FORCE, enforce update of the active region."
+ (when minimap-bufname
+ (let ((win (get-buffer-window minimap-bufname))
+ start end pt ov)
+ (when win
+ (setq start (window-start)
+ end (window-end)
+ pt (point)
+ ov)
+ (with-selected-window win
+ (unless (and (not force)
+ (= minimap-start start)
+ (= minimap-end end))
+ (move-overlay minimap-active-overlay start end)
+ (setq minimap-start start
+ minimap-end end)
+ (minimap-recenter (line-number-at-pos (/ (+ end start) 2))
+ (/ (- (line-number-at-pos end)
+ (line-number-at-pos start))
+ 2)))
+ (goto-char pt)
+ (when minimap-always-recenter
+ (recenter (round (/ (window-height) 2)))))))))
+
+;;; Overlay movement
+
+(defun minimap-move-overlay-mouse (start-event)
+ "Move overlay by tracking mouse movement."
+ (interactive "e")
+ (mouse-set-point start-event)
+ (when (get-buffer-window (buffer-base-buffer (current-buffer)))
+ (let* ((echo-keystrokes 0)
+ (end-posn (event-end start-event))
+ (start-point (posn-point end-posn))
+ (make-cursor-line-fully-visible nil)
+ (cursor-type nil)
+ (pcselmode pc-selection-mode)
+ pt ev)
+ (when pcselmode
+ (pc-selection-mode -1))
+ (move-overlay minimap-active-overlay start-point minimap-end)
+ (track-mouse
+ (minimap-set-overlay start-point)
+ (while (and
+ (consp (setq ev (read-event)))
+ (eq (car ev) 'mouse-movement))
+ (setq pt (posn-point (event-start ev)))
+ (when (numberp pt)
+ (minimap-set-overlay pt))))
+ (select-window (get-buffer-window (buffer-base-buffer)))
+ (minimap-update)
+ (when pcselmode
+ (pc-selection-mode 1)))))
+
+(defun minimap-set-overlay (pt)
+ "Set overlay position, with PT being the middle."
+ (goto-char pt)
+ (let* ((ovstartline (line-number-at-pos minimap-start))
+ (ovendline (line-number-at-pos minimap-end))
+ (ovheight (round (/ (- ovendline ovstartline) 2)))
+ (line (line-number-at-pos))
+ (winstart (window-start))
+ (winend (window-end))
+ newstart newend)
+ (setq pt (point-at-bol))
+ (setq newstart (minimap-line-to-pos (- line ovheight)))
+ ;; Perform recentering
+ (minimap-recenter line ovheight)
+ ;; Set new position in main buffer and redisplay
+ (with-selected-window (get-buffer-window (buffer-base-buffer))
+ (goto-char pt)
+ (set-window-start nil newstart)
+ (redisplay t)
+ (setq newend (window-end)))
+ (when (eq minimap-recenter-type 'free)
+ (while (> newend winend)
+ (scroll-up 5)
+ (redisplay t)
+ (setq winend (window-end))))
+ (move-overlay minimap-active-overlay newstart newend)))
+
+(defun minimap-line-to-pos (line)
+ "Return point position of line number LINE."
+ (save-excursion
+ (goto-char 1)
+ (if (eq selective-display t)
+ (re-search-forward "[\n\C-m]" nil 'end (1- line))
+ (forward-line (1- line)))
+ (point)))
+
+(defun minimap-recenter (middle height)
+ "Recenter the minimap according to `minimap-recenter-type'.
+MIDDLE is the line number in the middle of the active region.
+HEIGHT is the number of lines from MIDDLE to begin/end of the
+active region."
+ (cond
+ ;; Relative recentering
+ ((eq minimap-recenter-type 'relative)
+ (let* ((maxlines (line-number-at-pos (point-max)))
+ percentage relpos newline start numlines)
+ (setq numlines (count-lines (window-start) (window-end)))
+ (setq percentage (/ (float middle) (float maxlines)))
+ (setq newline (ceiling (* percentage numlines)))
+ (setq start (minimap-line-to-pos
+ (- middle height
+ (floor (* percentage
+ (- numlines height height))))))
+ (or (> start (point-min))
+ (setq start (point-min)))
+ ;; If (point-max) already visible, don't go further
+ (if (and (> start (window-start))
+ (with-selected-window (get-buffer-window (buffer-base-buffer))
+ (= (point-max) (window-end))))
+ (save-excursion
+ (goto-char (point-max))
+ (recenter -1))
+ (unless (and (> start (window-start))
+ (= (point-max) (window-end)))
+ (set-window-start nil start)))))
+ ;; Middle recentering
+ ((eq minimap-recenter-type 'middle)
+ (let ((start (- middle height
+ (floor (* 0.5
+ (- minimap-numlines height height))))))
+ (if (< start 1)
+ (progn
+ ;; Hack: Emacs cannot scroll down any further, so we fake
+ ;; it using an overlay. Otherwise, the active region
+ ;; would move to the top.
+ (overlay-put minimap-pointmin-overlay
+ 'display (concat
+ (make-string (abs start) 10)
+ (buffer-substring (point-min) (1+ (point-min)))))
+ (overlay-put minimap-pointmin-overlay
+ 'face `(:background ,(face-background 'default)))
+ (overlay-put minimap-pointmin-overlay
+ 'priority 10)
+ (setq start 1))
+ (overlay-put minimap-pointmin-overlay 'display "")
+ (overlay-put minimap-pointmin-overlay 'face nil))
+ (set-window-start nil (minimap-line-to-pos start))))
+ ;; Free recentering
+ ((eq minimap-recenter-type 'free)
+ (let ((newstart (minimap-line-to-pos (- middle height)))
+ (winstart (window-start)))
+ (while (< newstart winstart)
+ (scroll-down 5)
+ (redisplay t)
+ (setq winstart (window-start)))))))
+
+;;; Minimap minor mode
+
+(defvar minimap-mode-map (make-sparse-keymap)
+ "Keymap used by `minimap-mode'.")
+
+(define-key minimap-mode-map [down-mouse-1] 'minimap-move-overlay-mouse)
+(define-key minimap-mode-map [down-mouse-2] 'minimap-move-overlay-mouse)
+(define-key minimap-mode-map [down-mouse-3] 'minimap-move-overlay-mouse)
+
+(define-minor-mode minimap-mode
+ "Minor mode for minimap sidebar."
+ nil "minimap" minimap-mode-map)
+
+;;; Sync minimap with modes which create/delete overlays.
+
+(defun minimap-sync-overlays ()
+ "Synchronize overlays between base and minimap buffer.
+Apply semantic overlays or face enlargement if necessary."
+ (interactive)
+ (when minimap-bufname
+ (let ((baseov (overlays-in (point-min) (point-max)))
+ (semantic (and (boundp 'semantic-version)
+ (semantic-active-p)))
+ ov props p)
+ (with-current-buffer minimap-bufname
+ (remove-overlays)
+ (while baseov
+ (when (setq props (minimap-get-sync-properties (car baseov)))
+ (setq ov (make-overlay (overlay-start (car baseov))
+ (overlay-end (car baseov))))
+ (while (setq p (car props))
+ (overlay-put ov (car p) (cadr p))
+ (setq props (cdr props))))
+ (setq baseov (cdr baseov)))
+ (move-overlay minimap-pointmin-overlay (point-min) (1+ (point-min)))
+ ;; Re-apply font overlay
+ (move-overlay minimap-base-overlay (point-min) (point-max)))
+ ;; Face enlargement
+ (when (and font-lock-mode
+ (or (eq minimap-enlarge-certain-faces 'always)
+ (and (eq minimap-enlarge-certain-faces 'as-fallback)
+ (or (not minimap-display-semantic-overlays)
+ (not semantic)))))
+ (when (eq font-lock-support-mode 'jit-lock-mode)
+ (jit-lock-fontify-now))
+ (with-current-buffer minimap-bufname
+ (minimap-enlarge-faces)))
+ ;; Semantic overlays
+ (when (and semantic
+ minimap-display-semantic-overlays)
+ (minimap-apply-semantic-overlays)))
+ (minimap-update t)))
+
+(defun minimap-get-sync-properties (ov)
+ "Get properties from overlay OV which should be synced.
+You can specify those properties with
+`minimap-sync-overlay-properties'."
+ (delq nil
+ (mapcar
+ (lambda (p)
+ (let ((val (overlay-get ov p)))
+ (if val
+ (list p val)
+ nil)))
+ minimap-sync-overlay-properties)))
+
+(defun minimap-enlarge-faces ()
+ "Apply default font to all faces in `minimap-normal-height-faces'.
+This has to be called in the minimap buffer."
+ (let ((pos (next-single-property-change (point-min) 'face))
+ next ov face)
+ (while pos
+ (setq face (get-text-property pos 'face))
+ (when (delq nil (mapcar (lambda (x) (equal x face))
+ minimap-normal-height-faces))
+ (setq ov
+ (make-overlay pos
+ (setq pos (next-single-property-change pos 'face))))
+ (overlay-put ov 'face `(:family ,(face-font 'default)))
+ (overlay-put ov 'priority 5))
+ (setq pos (next-single-property-change pos 'face)))))
+
+(defun minimap-apply-semantic-overlays ()
+ "Apply semantic overlays to the minimap.
+This has to be called from the base buffer."
+ (let ((tags (semantic-fetch-tags))
+ tag class ov ovnew)
+ (while tags
+ (setq tag (car tags))
+ (setq class (semantic-tag-class tag))
+ (setq ov (semantic-tag-overlay tag))
+ (when (and (overlayp ov)
+ (or (eq class 'function)
+ (eq class 'type)
+ (eq class 'variable)))
+ (with-current-buffer minimap-bufname
+ (let ((start (overlay-start ov))
+ (end (overlay-end ov))
+ (name (semantic-tag-name tag)))
+ (overlay-put
+ (setq ovnew (make-overlay start end))
+ 'face `(:background ,(face-background
+ (intern (format "minimap-semantic-%s-face"
+ (symbol-name class))))))
+ (overlay-put ovnew 'priority 1)
+ (setq start
+ (minimap-line-to-pos (/ (+ (line-number-at-pos start)
+ (line-number-at-pos end)) 2)))
+ (setq end (progn (goto-char start) (point-at-eol)))
+ (setq ovnew (make-overlay start end))
+ (overlay-put ovnew 'face (format "minimap-semantic-%s-face"
+ (symbol-name class)))
+ (overlay-put ovnew 'display (concat " " name " "))
+ (overlay-put ovnew 'priority 6))))
+ (setq tags (cdr tags)))))
+
+;; outline-(minor-)mode
+(add-hook 'outline-view-change-hook 'minimap-sync-overlays)
+
+;; hideshow
+(add-hook 'hs-hide-hook 'minimap-sync-overlays)
+(add-hook 'hs-show-hook 'minimap-sync-overlays)
+
+(provide 'minimap)
+
+;;; minimap.el ends here
diff --git a/emacs.d/popup.el b/emacs.d/popup.el
new file mode 100644
index 0000000..0f14dfe
--- /dev/null
+++ b/emacs.d/popup.el
@@ -0,0 +1,1061 @@
+;;; popup.el --- Visual popup interface
+
+;; Copyright (C) 2009, 2010 Tomohiro Matsuyama
+
+;; Author: Tomohiro Matsuyama <tomo@cx4a.org>
+;; Keywords: lisp
+;; Version: 0.4
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl))
+
+
+
+;; Utilities
+
+(defvar popup-use-optimized-column-computation t
+ "Use optimized column computation routine.
+If there is a problem, please set it to nil.")
+
+;; Borrowed from anything.el
+(defmacro popup-aif (test-form then-form &rest else-forms)
+ "Anaphoric if. Temporary variable `it' is the result of test-form."
+ (declare (indent 2))
+ `(let ((it ,test-form))
+ (if it ,then-form ,@else-forms)))
+
+(defun popup-x-to-string (x)
+ "Convert any object to string effeciently.
+This is faster than prin1-to-string in many cases."
+ (typecase x
+ (string x)
+ (symbol (symbol-name x))
+ (integer (number-to-string x))
+ (float (number-to-string x))
+ (t (format "%s" x))))
+
+(defun popup-substring-by-width (string width)
+ "Return cons of substring and remaining string by `WIDTH'."
+ ;; Expand tabs with 4 spaces
+ (setq string (replace-regexp-in-string "\t" " " string))
+ (loop with len = (length string)
+ with w = 0
+ for l from 0
+ for c in (append string nil)
+ while (<= (incf w (char-width c)) width)
+ finally return
+ (if (< l len)
+ (cons (substring string 0 l) (substring string l))
+ (list string))))
+
+(defun popup-fill-string (string &optional width max-width justify squeeze)
+ "Split STRING into fixed width strings and return a cons cell like
+\(WIDTH . ROWS). Here, the car WIDTH indicates the actual maxim width of ROWS.
+
+The argument WIDTH specifies the width of filling each paragraph. WIDTH nil
+means don't perform any justification and word wrap. Note that this function
+doesn't add any padding characters at the end of each row.
+
+MAX-WIDTH, if WIDTH is nil, specifies the maximum number of columns.
+
+The optional fourth argument JUSTIFY specifies which kind of justification
+to do: `full', `left', `right', `center', or `none' (equivalent to nil).
+A value of t means handle each paragraph as specified by its text properties.
+
+SQUEEZE nil means leave whitespaces other than line breaks untouched."
+ (if (eq width 0)
+ (error "Can't fill string with 0 width"))
+ (if width
+ (setq max-width width))
+ (with-temp-buffer
+ (let ((tab-width 4)
+ (fill-column width)
+ (left-margin 0)
+ (kinsoku-limit 1)
+ indent-tabs-mode
+ row rows)
+ (insert string)
+ (untabify (point-min) (point-max))
+ (if width
+ (fill-region (point-min) (point-max) justify (not squeeze)))
+ (goto-char (point-min))
+ (setq width 0)
+ (while (prog2
+ (let ((line (buffer-substring
+ (point) (progn (end-of-line) (point)))))
+ (if max-width
+ (while (progn
+ (setq row (truncate-string-to-width line max-width)
+ width (max width (string-width row)))
+ (push row rows)
+ (if (not (= (length row) (length line)))
+ (setq line (substring line (length row))))))
+ (setq width (max width (string-width line)))
+ (push line rows)))
+ (< (point) (point-max))
+ (beginning-of-line 2)))
+ (cons width (nreverse rows)))))
+
+(defmacro popup-save-buffer-state (&rest body)
+ (declare (indent 0))
+ `(save-excursion
+ (let ((buffer-undo-list t)
+ (buffer-read-only nil)
+ (modified (buffer-modified-p)))
+ (unwind-protect
+ (progn ,@body)
+ (set-buffer-modified-p modified)))))
+
+(defun popup-preferred-width (list)
+ "Return preferred width of popup to show `LIST' beautifully."
+ (loop with tab-width = 4
+ for item in list
+ for summary = (popup-item-summary item)
+ maximize (string-width (popup-x-to-string item)) into width
+ if (stringp summary)
+ maximize (+ (string-width summary) 2) into summary-width
+ finally return (* (ceiling (/ (+ (or width 0) (or summary-width 0)) 10.0)) 10)))
+
+;; window-full-width-p is not defined in Emacs 22.1
+(defun popup-window-full-width-p (&optional window)
+ (if (fboundp 'window-full-width-p)
+ (window-full-width-p window)
+ (= (window-width window) (frame-width (window-frame (or window (selected-window)))))))
+
+;; truncated-partial-width-window-p is not defined in Emacs 22
+(defun popup-truncated-partial-width-window-p (&optional window)
+ (unless window
+ (setq window (selected-window)))
+ (unless (popup-window-full-width-p window)
+ (let ((t-p-w-w (buffer-local-value 'truncate-partial-width-windows
+ (window-buffer window))))
+ (if (integerp t-p-w-w)
+ (< (window-width window) t-p-w-w)
+ t-p-w-w))))
+
+(defun popup-current-physical-column ()
+ (or (when (and popup-use-optimized-column-computation
+ (eq (window-hscroll) 0))
+ (let ((current-column (current-column)))
+ (if (or (popup-truncated-partial-width-window-p)
+ truncate-lines
+ (< current-column (window-width)))
+ current-column)))
+ (car (posn-col-row (posn-at-point)))))
+
+(defun popup-last-line-of-buffer-p ()
+ (save-excursion (end-of-line) (/= (forward-line) 0)))
+
+(defun popup-lookup-key-by-event (function event)
+ (or (funcall function (vector event))
+ (if (symbolp event)
+ (popup-aif (get event 'event-symbol-element-mask)
+ (funcall function (vector (logior (or (get (car it) 'ascii-character) 0)
+ (cadr it))))))))
+
+
+
+;; Popup common
+
+(defgroup popup nil
+ "Visual popup interface"
+ :group 'lisp
+ :prefix "popup-")
+
+(defface popup-face
+ '((t (:background "lightgray" :foreground "black")))
+ "Face for popup."
+ :group 'popup)
+
+(defface popup-scroll-bar-foreground-face
+ '((t (:background "black")))
+ "Foreground face for scroll-bar."
+ :group 'popup)
+
+(defface popup-scroll-bar-background-face
+ '((t (:background "gray")))
+ "Background face for scroll-bar."
+ :group 'popup)
+
+(defvar popup-instances nil
+ "Popup instances.")
+
+(defvar popup-scroll-bar-foreground-char
+ (propertize " " 'face 'popup-scroll-bar-foreground-face)
+ "Foreground character for scroll-bar.")
+
+(defvar popup-scroll-bar-background-char
+ (propertize " " 'face 'popup-scroll-bar-background-face)
+ "Background character for scroll-bar.")
+
+(defstruct popup
+ point row column width height min-height direction overlays
+ parent depth
+ face selection-face
+ margin-left margin-right margin-left-cancel scroll-bar symbol
+ cursor offset scroll-top current-height list newlines
+ pattern original-list)
+
+(defun popup-item-propertize (item &rest properties)
+ "Same to `propertize` but this avoids overriding existed value with `nil` property."
+ (let (props)
+ (while properties
+ (when (cadr properties)
+ (push (car properties) props)
+ (push (cadr properties) props))
+ (setq properties (cddr properties)))
+ (apply 'propertize
+ (popup-x-to-string item)
+ (nreverse props))))
+
+(defun popup-item-property (item property)
+ (if (stringp item)
+ (get-text-property 0 property item)))
+
+(defun* popup-make-item (name
+ &key
+ value
+ popup-face
+ selection-face
+ sublist
+ document
+ symbol
+ summary)
+ "Utility function to make popup item.
+See also `popup-item-propertize'."
+ (popup-item-propertize name
+ 'value value
+ 'popup-face popup-face
+ 'selection-face selection-face
+ 'document document
+ 'symbol symbol
+ 'summary summary
+ 'sublist sublist))
+
+(defsubst popup-item-value (item) (popup-item-property item 'value))
+(defsubst popup-item-value-or-self (item) (or (popup-item-value item) item))
+(defsubst popup-item-popup-face (item) (popup-item-property item 'popup-face))
+(defsubst popup-item-selection-face (item) (popup-item-property item 'selection-face))
+(defsubst popup-item-document (item) (popup-item-property item 'document))
+(defsubst popup-item-summary (item) (popup-item-property item 'summary))
+(defsubst popup-item-symbol (item) (popup-item-property item 'symbol))
+(defsubst popup-item-sublist (item) (popup-item-property item 'sublist))
+
+(defun popup-item-documentation (item)
+ (let ((doc (popup-item-document item)))
+ (if (functionp doc)
+ (setq doc (funcall doc (popup-item-value-or-self item))))
+ doc))
+
+(defun popup-item-show-help-1 (item)
+ (let ((doc (popup-item-documentation item)))
+ (when doc
+ (with-current-buffer (get-buffer-create " *Popup Help*")
+ (erase-buffer)
+ (insert doc)
+ (goto-char (point-min))
+ (display-buffer (current-buffer)))
+ t)))
+
+(defun popup-item-show-help (item &optional persist)
+ (when item
+ (if (not persist)
+ (save-window-excursion
+ (when (popup-item-show-help-1 item)
+ (block nil
+ (while t
+ (clear-this-command-keys)
+ (let ((key (read-key-sequence-vector nil)))
+ (case (key-binding key)
+ ('scroll-other-window
+ (scroll-other-window))
+ ('scroll-other-window-down
+ (scroll-other-window-down nil))
+ (t
+ (setq unread-command-events (append key unread-command-events))
+ (return))))))))
+ (popup-item-show-help-1 item))))
+
+(defun popup-set-list (popup list)
+ (popup-set-filtered-list popup list)
+ (setf (popup-pattern popup) nil)
+ (setf (popup-original-list popup) list))
+
+(defun popup-set-filtered-list (popup list)
+ (setf (popup-list popup) list
+ (popup-offset popup) (if (> (popup-direction popup) 0)
+ 0
+ (max (- (popup-height popup) (length list)) 0))))
+
+(defun popup-selected-item (popup)
+ (nth (popup-cursor popup) (popup-list popup)))
+
+(defun popup-selected-line (popup)
+ (- (popup-cursor popup) (popup-scroll-top popup)))
+
+(defun popup-line-overlay (popup line)
+ (aref (popup-overlays popup) line))
+
+(defun popup-selected-line-overlay (popup)
+ (popup-line-overlay popup (popup-selected-line popup)))
+
+(defun popup-hide-line (popup line)
+ (let ((overlay (popup-line-overlay popup line)))
+ (overlay-put overlay 'display nil)
+ (overlay-put overlay 'after-string nil)))
+
+(defun popup-line-hidden-p (popup line)
+ (let ((overlay (popup-line-overlay popup line)))
+ (and (eq (overlay-get overlay 'display) nil)
+ (eq (overlay-get overlay 'after-string) nil))))
+
+(defun popup-set-line-item (popup line item face margin-left margin-right scroll-bar-char symbol summary)
+ (let* ((overlay (popup-line-overlay popup line))
+ (content (popup-create-line-string popup (popup-x-to-string item) margin-left margin-right symbol summary))
+ (start 0)
+ (prefix (overlay-get overlay 'prefix))
+ (postfix (overlay-get overlay 'postfix))
+ end)
+ ;; Overlap face properties
+ (if (get-text-property start 'face content)
+ (setq start (next-single-property-change start 'face content)))
+ (while (and start (setq end (next-single-property-change start 'face content)))
+ (put-text-property start end 'face face content)
+ (setq start (next-single-property-change end 'face content)))
+ (if start
+ (put-text-property start (length content) 'face face content))
+ (unless (overlay-get overlay 'dangle)
+ (overlay-put overlay 'display (concat prefix (substring content 0 1)))
+ (setq prefix nil
+ content (concat (substring content 1))))
+ (overlay-put overlay
+ 'after-string
+ (concat prefix
+ content
+ scroll-bar-char
+ postfix))))
+
+(defun popup-create-line-string (popup string margin-left margin-right symbol summary)
+ (let* ((popup-width (popup-width popup))
+ (summary-width (string-width summary))
+ (string (car (popup-substring-by-width string
+ (- popup-width
+ (if (> summary-width 0)
+ (+ summary-width 2)
+ 0)))))
+ (string-width (string-width string)))
+ (concat margin-left
+ string
+ (make-string (max (- popup-width string-width summary-width) 0) ? )
+ summary
+ symbol
+ margin-right)))
+
+(defun popup-live-p (popup)
+ (and popup (popup-overlays popup) t))
+
+(defun popup-child-point (popup &optional offset)
+ (overlay-end (popup-line-overlay popup
+ (or offset
+ (popup-selected-line popup)))))
+
+(defun* popup-create (point
+ width
+ height
+ &key
+ min-height
+ around
+ (face 'popup-face)
+ (selection-face face)
+ scroll-bar
+ margin-left
+ margin-right
+ symbol
+ parent
+ parent-offset)
+ (or margin-left (setq margin-left 0))
+ (or margin-right (setq margin-right 0))
+ (unless point
+ (setq point
+ (if parent (popup-child-point parent parent-offset) (point))))
+
+ (save-excursion
+ (goto-char point)
+ (let* ((row (line-number-at-pos))
+ (column (popup-current-physical-column))
+ (overlays (make-vector height nil))
+ (popup-width (+ width
+ (if scroll-bar 1 0)
+ margin-left
+ margin-right
+ (if symbol 2 0)))
+ margin-left-cancel
+ (window (selected-window))
+ (window-start (window-start))
+ (window-hscroll (window-hscroll))
+ (window-width (window-width))
+ (right (+ column popup-width))
+ (overflow (and (> right window-width)
+ (>= right popup-width)))
+ (foldable (and (null parent)
+ (>= column popup-width)))
+ (direction (or
+ ;; Currently the direction of cascade popup won't be changed
+ (and parent (popup-direction parent))
+
+ ;; Calculate direction
+ (if (and (> row height)
+ (> height (- (max 1 (- (window-height)
+ (if mode-line-format 1 0)
+ (if header-line-format 1 0)))
+ (count-lines window-start (point)))))
+ -1
+ 1)))
+ (depth (if parent (1+ (popup-depth parent)) 0))
+ (newlines (max 0 (+ (- height (count-lines point (point-max))) (if around 1 0))))
+ current-column)
+ (when (> newlines 0)
+ (popup-save-buffer-state
+ (goto-char (point-max))
+ (insert (make-string newlines ?\n))))
+
+ (if overflow
+ (if foldable
+ (progn
+ (decf column (- popup-width margin-left margin-right))
+ (unless around (move-to-column column)))
+ (when (not truncate-lines)
+ ;; Cut out overflow
+ (let ((d (1+ (- popup-width (- window-width column)))))
+ (decf popup-width d)
+ (decf width d)))
+ (decf column margin-left))
+ (decf column margin-left))
+ (when (and (null parent)
+ (< column 0))
+ ;; Cancel margin left
+ (setq column 0)
+ (decf popup-width margin-left)
+ (setq margin-left-cancel t))
+
+ (dotimes (i height)
+ (let (overlay begin w (dangle t) (prefix "") (postfix ""))
+ (when around
+ (if (>= emacs-major-version 23)
+ (vertical-motion (cons column direction))
+ (vertical-motion direction)
+ (move-to-column (+ (current-column) column))))
+ (setq around t
+ current-column (popup-current-physical-column))
+
+ (when (> current-column column)
+ (backward-char)
+ (setq current-column (popup-current-physical-column)))
+ (when (< current-column column)
+ ;; Extend short buffer lines by popup prefix (line of spaces)
+ (setq prefix (make-string (+ (if (= current-column 0)
+ (- window-hscroll (current-column))
+ 0)
+ (- column current-column))
+ ? )))
+
+ (setq begin (point))
+ (setq w (+ popup-width (length prefix)))
+ (while (and (not (eolp)) (> w 0))
+ (setq dangle nil)
+ (decf w (char-width (char-after)))
+ (forward-char))
+ (if (< w 0)
+ (setq postfix (make-string (- w) ? )))
+
+ (setq overlay (make-overlay begin (point)))
+ (overlay-put overlay 'window window)
+ (overlay-put overlay 'dangle dangle)
+ (overlay-put overlay 'prefix prefix)
+ (overlay-put overlay 'postfix postfix)
+ (overlay-put overlay 'width width)
+ (aset overlays
+ (if (> direction 0) i (- height i 1))
+ overlay)))
+ (loop for p from (- 10000 (* depth 1000))
+ for overlay in (nreverse (append overlays nil))
+ do (overlay-put overlay 'priority p))
+ (let ((it (make-popup :point point
+ :row row
+ :column column
+ :width width
+ :height height
+ :min-height min-height
+ :direction direction
+ :parent parent
+ :depth depth
+ :face face
+ :selection-face selection-face
+ :margin-left margin-left
+ :margin-right margin-right
+ :margin-left-cancel margin-left-cancel
+ :scroll-bar scroll-bar
+ :symbol symbol
+ :cursor 0
+ :scroll-top 0
+ :current-height 0
+ :list nil
+ :newlines newlines
+ :overlays overlays)))
+ (push it popup-instances)
+ it))))
+
+(defun popup-delete (popup)
+ (when (popup-live-p popup)
+ (popup-hide popup)
+ (mapc 'delete-overlay (popup-overlays popup))
+ (setf (popup-overlays popup) nil)
+ (setq popup-instances (delq popup popup-instances))
+ (let ((newlines (popup-newlines popup)))
+ (when (> newlines 0)
+ (popup-save-buffer-state
+ (goto-char (point-max))
+ (dotimes (i newlines)
+ (if (= (char-before) ?\n)
+ (delete-char -1)))))))
+ nil)
+
+(defun popup-draw (popup)
+ (loop with height = (popup-height popup)
+ with min-height = (popup-min-height popup)
+ with popup-face = (popup-face popup)
+ with selection-face = (popup-selection-face popup)
+ with list = (popup-list popup)
+ with length = (length list)
+ with thum-size = (max (/ (* height height) (max length 1)) 1)
+ with page-size = (/ (+ 0.0 (max length 1)) height)
+ with scroll-bar = (popup-scroll-bar popup)
+ with margin-left = (make-string (if (popup-margin-left-cancel popup) 0 (popup-margin-left popup)) ? )
+ with margin-right = (make-string (popup-margin-right popup) ? )
+ with symbol = (popup-symbol popup)
+ with cursor = (popup-cursor popup)
+ with scroll-top = (popup-scroll-top popup)
+ with offset = (popup-offset popup)
+ for o from offset
+ for i from scroll-top
+ while (< o height)
+ for item in (nthcdr scroll-top list)
+ for page-index = (* thum-size (/ o thum-size))
+ for face = (if (= i cursor)
+ (or (popup-item-selection-face item) selection-face)
+ (or (popup-item-popup-face item) popup-face))
+ for empty-char = (propertize " " 'face face)
+ for scroll-bar-char = (if scroll-bar
+ (cond
+ ((<= page-size 1)
+ empty-char)
+ ((and (> page-size 1)
+ (>= cursor (* page-index page-size))
+ (< cursor (* (+ page-index thum-size) page-size)))
+ popup-scroll-bar-foreground-char)
+ (t
+ popup-scroll-bar-background-char))
+ "")
+ for sym = (if symbol
+ (concat " " (or (popup-item-symbol item) " "))
+ "")
+ for summary = (or (popup-item-summary item) "")
+
+ do
+ ;; Show line and set item to the line
+ (popup-set-line-item popup o item face margin-left margin-right scroll-bar-char sym summary)
+
+ finally
+ ;; Remember current height
+ (setf (popup-current-height popup) (- o offset))
+
+ ;; Hide remaining lines
+ (let ((scroll-bar-char (if scroll-bar (propertize " " 'face popup-face) ""))
+ (symbol (if symbol " " "")))
+ (if (> (popup-direction popup) 0)
+ (progn
+ (when min-height
+ (while (< o min-height)
+ (popup-set-line-item popup o "" popup-face margin-left margin-right scroll-bar-char symbol "")
+ (incf o)))
+ (while (< o height)
+ (popup-hide-line popup o)
+ (incf o)))
+ (loop with h = (if min-height (- height min-height) offset)
+ for o from 0 below offset
+ if (< o h)
+ do (popup-hide-line popup o)
+ if (>= o h)
+ do (popup-set-line-item popup o "" popup-face margin-left margin-right scroll-bar-char symbol ""))))))
+
+(defun popup-hide (popup)
+ (dotimes (i (popup-height popup))
+ (popup-hide-line popup i)))
+
+(defun popup-hidden-p (popup)
+ (let ((hidden t))
+ (when (popup-live-p popup)
+ (dotimes (i (popup-height popup))
+ (unless (popup-line-hidden-p popup i)
+ (setq hidden nil))))
+ hidden))
+
+(defun popup-select (popup i)
+ (setq i (+ i (popup-offset popup)))
+ (when (and (<= 0 i) (< i (popup-height popup)))
+ (setf (popup-cursor popup) i)
+ (popup-draw popup)
+ t))
+
+(defun popup-next (popup)
+ (let ((height (popup-height popup))
+ (cursor (1+ (popup-cursor popup)))
+ (scroll-top (popup-scroll-top popup))
+ (length (length (popup-list popup))))
+ (cond
+ ((>= cursor length)
+ ;; Back to first page
+ (setq cursor 0
+ scroll-top 0))
+ ((= cursor (+ scroll-top height))
+ ;; Go to next page
+ (setq scroll-top (min (1+ scroll-top) (max (- length height) 0)))))
+ (setf (popup-cursor popup) cursor
+ (popup-scroll-top popup) scroll-top)
+ (popup-draw popup)))
+
+(defun popup-previous (popup)
+ (let ((height (popup-height popup))
+ (cursor (1- (popup-cursor popup)))
+ (scroll-top (popup-scroll-top popup))
+ (length (length (popup-list popup))))
+ (cond
+ ((< cursor 0)
+ ;; Go to last page
+ (setq cursor (1- length)
+ scroll-top (max (- length height) 0)))
+ ((= cursor (1- scroll-top))
+ ;; Go to previous page
+ (decf scroll-top)))
+ (setf (popup-cursor popup) cursor
+ (popup-scroll-top popup) scroll-top)
+ (popup-draw popup)))
+
+(defun popup-scroll-down (popup &optional n)
+ (let ((scroll-top (min (+ (popup-scroll-top popup) (or n 1))
+ (- (length (popup-list popup)) (popup-height popup)))))
+ (setf (popup-cursor popup) scroll-top
+ (popup-scroll-top popup) scroll-top)
+ (popup-draw popup)))
+
+(defun popup-scroll-up (popup &optional n)
+ (let ((scroll-top (max (- (popup-scroll-top popup) (or n 1))
+ 0)))
+ (setf (popup-cursor popup) scroll-top
+ (popup-scroll-top popup) scroll-top)
+ (popup-draw popup)))
+
+
+
+;; Popup isearch
+
+(defface popup-isearch-match
+ '((t (:background "sky blue")))
+ "Popup isearch match face."
+ :group 'popup)
+
+(defvar popup-isearch-cursor-color "blue")
+
+(defvar popup-isearch-keymap
+ (let ((map (make-sparse-keymap)))
+ ;(define-key map "\r" 'popup-isearch-done)
+ (define-key map "\C-g" 'popup-isearch-cancel)
+ (define-key map "\C-h" 'popup-isearch-delete)
+ (define-key map (kbd "DEL") 'popup-isearch-delete)
+ map))
+
+(defsubst popup-isearch-char-p (char)
+ (and (integerp char)
+ (<= 32 char)
+ (<= char 126)))
+
+(defun popup-isearch-filter-list (pattern list)
+ (loop with regexp = (regexp-quote pattern)
+ for item in list
+ do
+ (unless (stringp item)
+ (setq item (popup-item-propertize (popup-x-to-string item)
+ 'value item)))
+ if (string-match regexp item)
+ collect (let ((beg (match-beginning 0))
+ (end (match-end 0)))
+ (alter-text-property 0 (length item) 'face
+ (lambda (prop)
+ (unless (eq prop 'popup-isearch-match)
+ prop))
+ item)
+ (put-text-property beg end
+ 'face 'popup-isearch-match
+ item)
+ item)))
+
+(defun popup-isearch-prompt (popup pattern)
+ (format "Pattern: %s" (if (= (length (popup-list popup)) 0)
+ (propertize pattern 'face 'isearch-fail)
+ pattern)))
+
+(defun popup-isearch-update (popup pattern &optional callback)
+ (setf (popup-cursor popup) 0
+ (popup-scroll-top popup) 0
+ (popup-pattern popup) pattern)
+ (let ((list (popup-isearch-filter-list pattern (popup-original-list popup))))
+ (popup-set-filtered-list popup list)
+ (if callback
+ (funcall callback list)))
+ (popup-draw popup))
+
+(defun* popup-isearch (popup
+ &key
+ (cursor-color popup-isearch-cursor-color)
+ (keymap popup-isearch-keymap)
+ callback
+ help-delay)
+ (let ((list (popup-original-list popup))
+ (pattern (or (popup-pattern popup) ""))
+ (old-cursor-color (frame-parameter (selected-frame) 'cursor-color))
+ prompt key binding done)
+ (unwind-protect
+ (unless (block nil
+ (if cursor-color
+ (set-cursor-color cursor-color))
+ (while t
+ (setq prompt (popup-isearch-prompt popup pattern))
+ (setq key (popup-menu-read-key-sequence keymap prompt help-delay))
+ (if (null key)
+ (unless (funcall popup-menu-show-quick-help-function popup nil :prompt prompt)
+ (clear-this-command-keys)
+ (push (read-event prompt) unread-command-events))
+ (setq binding (lookup-key keymap key))
+ (cond
+ ((and (stringp key)
+ (popup-isearch-char-p (aref key 0)))
+ (setq pattern (concat pattern key)))
+ ((eq binding 'popup-isearch-done)
+ (return t))
+ ((eq binding 'popup-isearch-cancel)
+ (return nil))
+ ((eq binding 'popup-isearch-delete)
+ (if (> (length pattern) 0)
+ (setq pattern (substring pattern 0 (1- (length pattern))))))
+ (t
+ (setq unread-command-events
+ (append (listify-key-sequence key) unread-command-events))
+ (return t)))
+ (popup-isearch-update popup pattern callback))))
+ (popup-isearch-update popup "" callback)
+ t) ; Return non-nil if isearch is cancelled
+ (if old-cursor-color
+ (set-cursor-color old-cursor-color)))))
+
+
+
+;; Popup tip
+
+(defface popup-tip-face
+ '((t (:background "khaki1" :foreground "black")))
+ "Face for popup tip."
+ :group 'popup)
+
+(defvar popup-tip-max-width 80)
+
+(defun* popup-tip (string
+ &key
+ point
+ (around t)
+ width
+ (height 15)
+ min-height
+ truncate
+ margin
+ margin-left
+ margin-right
+ scroll-bar
+ parent
+ parent-offset
+ nowait
+ prompt
+ &aux tip lines)
+ (if (bufferp string)
+ (setq string (with-current-buffer string (buffer-string))))
+ ;; TODO strip text (mainly face) properties
+ (setq string (substring-no-properties string))
+
+ (and (eq margin t) (setq margin 1))
+ (or margin-left (setq margin-left margin))
+ (or margin-right (setq margin-right margin))
+
+ (let ((it (popup-fill-string string width popup-tip-max-width)))
+ (setq width (car it)
+ lines (cdr it)))
+
+ (setq tip (popup-create point width height
+ :min-height min-height
+ :around around
+ :margin-left margin-left
+ :margin-right margin-right
+ :scroll-bar scroll-bar
+ :face 'popup-tip-face
+ :parent parent
+ :parent-offset parent-offset))
+
+ (unwind-protect
+ (when (> (popup-width tip) 0) ; not to be corrupted
+ (when (and (not (eq width (popup-width tip))) ; truncated
+ (not truncate))
+ ;; Refill once again to lines be fitted to popup width
+ (setq width (popup-width tip))
+ (setq lines (cdr (popup-fill-string string width width))))
+
+ (popup-set-list tip lines)
+ (popup-draw tip)
+ (if nowait
+ tip
+ (clear-this-command-keys)
+ (push (read-event prompt) unread-command-events)
+ t))
+ (unless nowait
+ (popup-delete tip))))
+
+
+
+;; Popup menu
+
+(defface popup-menu-face
+ '((t (:background "lightgray" :foreground "black")))
+ "Face for popup menu."
+ :group 'popup)
+
+(defface popup-menu-selection-face
+ '((t (:background "steelblue" :foreground "white")))
+ "Face for popup menu selection."
+ :group 'popup)
+
+(defvar popup-menu-show-tip-function 'popup-tip
+ "Function used for showing tooltip by `popup-menu-show-quick-help'.")
+
+(defvar popup-menu-show-quick-help-function 'popup-menu-show-quick-help
+ "Function used for showing quick help by `popup-menu*'.")
+
+(defun popup-menu-show-help (menu &optional persist item)
+ (popup-item-show-help (or item (popup-selected-item menu)) persist))
+
+(defun popup-menu-documentation (menu &optional item)
+ (popup-item-documentation (or item (popup-selected-item menu))))
+
+(defun popup-menu-show-quick-help (menu &optional item &rest args)
+ (let* ((point (plist-get args :point))
+ (height (or (plist-get args :height) (popup-height menu)))
+ (min-height (min height (popup-current-height menu)))
+ (around nil)
+ (parent-offset (popup-offset menu))
+ (doc (popup-menu-documentation menu item)))
+ (when (stringp doc)
+ (if (popup-hidden-p menu)
+ (setq around t
+ menu nil
+ parent-offset nil)
+ (setq point nil))
+ (let ((popup-use-optimized-column-computation nil)) ; To avoid wrong positioning
+ (apply popup-menu-show-tip-function
+ doc
+ :point point
+ :height height
+ :min-height min-height
+ :around around
+ :parent menu
+ :parent-offset parent-offset
+ args)))))
+
+(defun popup-menu-read-key-sequence (keymap &optional prompt timeout)
+ (catch 'timeout
+ (let ((timer (and timeout
+ (run-with-timer timeout nil
+ (lambda ()
+ (if (zerop (length (this-command-keys)))
+ (throw 'timeout nil))))))
+ (old-global-map (current-global-map))
+ (temp-global-map (make-sparse-keymap))
+ (overriding-terminal-local-map (make-sparse-keymap)))
+ (substitute-key-definition 'keyboard-quit 'keyboard-quit
+ temp-global-map old-global-map)
+ (define-key temp-global-map [menu-bar] (lookup-key old-global-map [menu-bar]))
+ (define-key temp-global-map [tool-bar] (lookup-key old-global-map [tool-bar]))
+ (set-keymap-parent overriding-terminal-local-map keymap)
+ (if (current-local-map)
+ (define-key overriding-terminal-local-map [menu-bar]
+ (lookup-key (current-local-map) [menu-bar])))
+ (unwind-protect
+ (progn
+ (use-global-map temp-global-map)
+ (clear-this-command-keys)
+ (with-temp-message prompt
+ (read-key-sequence nil)))
+ (use-global-map old-global-map)
+ (if timer (cancel-timer timer))))))
+
+(defun popup-menu-fallback (event default))
+
+(defun* popup-menu-event-loop (menu keymap fallback &optional prompt help-delay isearch isearch-cursor-color isearch-keymap isearch-callback &aux key binding)
+ (block nil
+ (while (popup-live-p menu)
+ (and isearch
+ (popup-isearch menu
+ :cursor-color isearch-cursor-color
+ :keymap isearch-keymap
+ :callback isearch-callback
+ :help-delay help-delay)
+ (keyboard-quit))
+ (setq key (popup-menu-read-key-sequence keymap prompt help-delay))
+ (if (null key)
+ (unless (funcall popup-menu-show-quick-help-function menu nil :prompt prompt)
+ (clear-this-command-keys)
+ (push (read-event prompt) unread-command-events))
+ (if (eq (lookup-key (current-global-map) key) 'keyboard-quit)
+ (keyboard-quit))
+ (setq binding (lookup-key keymap key))
+ (cond
+ ((eq binding 'popup-close)
+ (if (popup-parent menu)
+ (return)))
+ ((memq binding '(popup-select popup-open))
+ (let* ((item (popup-selected-item menu))
+ (sublist (popup-item-sublist item)))
+ (if sublist
+ (popup-aif (popup-cascade-menu sublist
+ :around nil
+ :parent menu
+ :margin-left (popup-margin-left menu)
+ :margin-right (popup-margin-right menu)
+ :scroll-bar (popup-scroll-bar menu))
+ (and it (return it)))
+ (if (eq binding 'popup-select)
+ (return (popup-item-value-or-self item))))))
+ ((eq binding 'popup-next)
+ (popup-next menu))
+ ((eq binding 'popup-previous)
+ (popup-previous menu))
+ ((eq binding 'popup-help)
+ (popup-menu-show-help menu))
+ ((eq binding 'popup-isearch)
+ (popup-isearch menu
+ :cursor-color isearch-cursor-color
+ :keymap isearch-keymap
+ :callback isearch-callback
+ :help-delay help-delay))
+ ((commandp binding)
+ (call-interactively binding))
+ (t
+ (funcall fallback key (key-binding key))))))))
+
+;; popup-menu is used by mouse.el unfairly...
+(defun* popup-menu* (list
+ &key
+ point
+ (around t)
+ (width (popup-preferred-width list))
+ (height 15)
+ margin
+ margin-left
+ margin-right
+ scroll-bar
+ symbol
+ parent
+ parent-offset
+ (keymap popup-menu-keymap)
+ (fallback 'popup-menu-fallback)
+ help-delay
+ prompt
+ isearch
+ (isearch-cursor-color popup-isearch-cursor-color)
+ (isearch-keymap popup-isearch-keymap)
+ isearch-callback
+ &aux menu event)
+ (and (eq margin t) (setq margin 1))
+ (or margin-left (setq margin-left margin))
+ (or margin-right (setq margin-right margin))
+ (if (and scroll-bar
+ (integerp margin-right)
+ (> margin-right 0))
+ ;; Make scroll-bar space as margin-right
+ (decf margin-right))
+ (setq menu (popup-create point width height
+ :around around
+ :face 'popup-menu-face
+ :selection-face 'popup-menu-selection-face
+ :margin-left margin-left
+ :margin-right margin-right
+ :scroll-bar scroll-bar
+ :symbol symbol
+ :parent parent))
+ (unwind-protect
+ (progn
+ (popup-set-list menu list)
+ (popup-draw menu)
+ (popup-menu-event-loop menu keymap fallback prompt help-delay isearch
+ isearch-cursor-color isearch-keymap isearch-callback))
+ (popup-delete menu)))
+
+(defun popup-cascade-menu (list &rest args)
+ "Same to `popup-menu', but an element of `LIST' can be
+list of submenu."
+ (apply 'popup-menu*
+ (mapcar (lambda (item)
+ (if (consp item)
+ (popup-make-item (car item)
+ :sublist (cdr item)
+ :symbol ">")
+ item))
+ list)
+ :symbol t
+ args))
+
+(defvar popup-menu-keymap
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\r" 'popup-select)
+ (define-key map "\C-f" 'popup-open)
+ (define-key map [right] 'popup-open)
+ (define-key map "\C-b" 'popup-close)
+ (define-key map [left] 'popup-close)
+
+ (define-key map "\C-n" 'popup-next)
+ (define-key map [down] 'popup-next)
+ (define-key map "\C-p" 'popup-previous)
+ (define-key map [up] 'popup-previous)
+
+ (define-key map [f1] 'popup-help)
+ (define-key map (kbd "\C-?") 'popup-help)
+
+ (define-key map "\C-s" 'popup-isearch)
+ map))
+
+(provide 'popup)
+;;; popup.el ends here
diff --git a/emacs.d/rainbow-mode.el b/emacs.d/rainbow-mode.el
new file mode 100644
index 0000000..8207abc
--- /dev/null
+++ b/emacs.d/rainbow-mode.el
@@ -0,0 +1,207 @@
+;;; rainbow-mode.el --- prints color strings with colored background
+
+;; Copyright (C) 2010 Julien Danjou
+
+;; Author: Julien Danjou <julien@danjou.info>
+;; Keywords: strings, faces
+
+;; This file is NOT part of GNU Emacs.
+
+;; GNU Emacs 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 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; This minor mode will add background to strings that matches color names.
+;; i.e.
+;; #0000ff
+;; Will be printed in white with a blue background.
+;;
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl))
+
+(require 'regexp-opt)
+(require 'faces)
+
+(defgroup rainbow nil
+ "Show color strings with a background color."
+ :tag "Rainbow"
+ :group 'help)
+
+;; Hexadecimal colors
+(defvar rainbow-hexadecimal-colors-font-lock-keywords
+ '("#[0-9a-fA-F]\\{3\\}[0-9a-fA-F]\\{3\\}?"
+ (0 (rainbow-colorize-itself)))
+ "Font-lock keywords to add for hexadecimal colors.")
+
+;; rgb() colors
+(defvar rainbow-html-rgb-colors-font-lock-keywords
+ '(("rgb(\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*)"
+ (0 (rainbow-colorize-rgb)))
+ ("rgba(\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*\\([0-9]\\{1,3\\}\\(?:\s*%\\)?\\)\s*,\s*[0-9]\\{1,3\\}\s*%?\s*)"
+ (0 (rainbow-colorize-rgb))))
+ "Font-lock keywords to add for RGB colors.")
+
+;; HTML colors name
+(defvar rainbow-html-colors-font-lock-keywords nil
+ "Font-lock keywords to add for HTML colors.")
+(make-variable-buffer-local 'rainbow-html-colors-font-lock-keywords)
+
+(defcustom rainbow-html-colors-alist
+ '(("black" . "#000000")
+ ("silver" . "#C0C0C0")
+ ("gray" . "#808080")
+ ("white" . "#FFFFFF")
+ ("maroon" . "#800000")
+ ("red" . "#FF0000")
+ ("purple" . "#800080")
+ ("fuchsia" . "#FF00FF")
+ ("green" . "#008000")
+ ("lime" . "#00FF00")
+ ("olive" . "#808000")
+ ("yellow" . "#FFFF00")
+ ("navy" . "#000080")
+ ("blue" . "#0000FF")
+ ("teal" . "#008080")
+ ("aqua" . "#00FFFF"))
+ "Alist of HTML colors.
+Each entry should have the form (COLOR-NAME . HEXADECIMAL-COLOR)."
+ :group 'rainbow)
+
+(defcustom rainbow-html-colors-major-mode-list
+ '(html-mode css-mode php-mode nxml-mode xml-mode)
+ "List of major mode where HTML colors are enabled when
+`rainbow-html-colors' is set to auto."
+ :group 'rainbow)
+
+(defcustom rainbow-html-colors 'auto
+ "When to enable HTML colors.
+If set to t, the HTML colors will be enabled. If set to nil, the
+HTML colors will not be enabled. If set to auto, the HTML colors
+will be enabled if a major mode has been detected from the
+`rainbow-html-colors-major-mode-list'."
+ :group 'rainbow)
+
+;; X colors
+(defvar rainbow-x-colors-font-lock-keywords
+ `(,(regexp-opt (x-defined-colors) 'words)
+ (0 (rainbow-colorize-itself)))
+ "Font-lock keywords to add for X colors.")
+
+(defcustom rainbow-x-colors-major-mode-list
+ '(emacs-lisp-mode lisp-interaction-mode c-mode c++-mode java-mode)
+ "List of major mode where X colors are enabled when
+`rainbow-x-colors' is set to auto."
+ :group 'rainbow)
+
+(defcustom rainbow-x-colors 'auto
+ "When to enable X colors.
+If set to t, the X colors will be enabled. If set to nil, the
+X colors will not be enabled. If set to auto, the X colors
+will be enabled if a major mode has been detected from the
+`rainbow-x-colors-major-mode-list'."
+ :group 'rainbow)
+
+;; Functions
+(defun rainbow-colorize-match (color)
+ "Return a matched string propertized with a face whose
+background is COLOR. The foreground is computed using
+`rainbow-color-luminance', and is either white or black."
+ (put-text-property
+ (match-beginning 0) (match-end 0)
+ 'face `((:foreground ,(if (> 128.0 (rainbow-x-color-luminance color))
+ "white" "black"))
+ (:background ,color))))
+
+(defun rainbow-colorize-itself ()
+ "Colorize a match with itself."
+ (rainbow-colorize-match (match-string-no-properties 0)))
+
+(defun rainbow-colorize-by-assoc (assoc-list)
+ "Colorize a match with its association from ASSOC-LIST."
+ (rainbow-colorize-match (cdr (assoc (match-string-no-properties 0) assoc-list))))
+
+(defun rainbow-rgb-relative-to-absolute (number)
+ "Convert a relative NUMBER to absolute. If NUMBER is absolute, return NUMBER.
+This will convert \"80 %\" to 204, \"100 %\" to 255 but \"123\" to \"123\""
+ (let ((string-length (- (length number) 1)))
+ ;; Is this a number with %?
+ (if (eq (elt number string-length) ?%)
+ (/ (* (string-to-number (substring number 0 string-length)) 255) 100)
+ (string-to-number number))))
+
+(defun rainbow-colorize-rgb ()
+ "Colorize a match with itself."
+ (let ((r (rainbow-rgb-relative-to-absolute (match-string-no-properties 1)))
+ (g (rainbow-rgb-relative-to-absolute (match-string-no-properties 2)))
+ (b (rainbow-rgb-relative-to-absolute (match-string-no-properties 3))))
+ (rainbow-colorize-match (format "#%02X%02X%02X" r g b))))
+
+(defun rainbow-color-luminance (red green blue)
+ "Calculate the luminance of color composed of RED, BLUE and GREEN."
+ (floor (+ (* .2126 red) (* .7152 green) (* .0722 blue)) 256))
+
+(defun rainbow-x-color-luminance (color)
+ "Calculate the luminance of a color string (e.g. \"#ffaa00\", \"blue\")."
+ (let* ((values (x-color-values color))
+ (r (car values))
+ (g (cadr values))
+ (b (caddr values)))
+ (rainbow-color-luminance r g b)))
+
+(defun rainbow-turn-on ()
+ "Turn on raibow-mode."
+ (font-lock-add-keywords nil
+ (list rainbow-hexadecimal-colors-font-lock-keywords))
+ ;; Activate X colors?
+ (when (or (eq rainbow-x-colors t)
+ (and (eq rainbow-x-colors 'auto)
+ (memq major-mode rainbow-x-colors-major-mode-list)))
+ (font-lock-add-keywords nil
+ (list rainbow-x-colors-font-lock-keywords)))
+ ;; Activate HTML colors?
+ (when (or (eq rainbow-html-colors t)
+ (and (eq rainbow-html-colors 'auto)
+ (memq major-mode rainbow-html-colors-major-mode-list)))
+ (setq rainbow-html-colors-font-lock-keywords
+ `(,(regexp-opt (mapcar 'car rainbow-html-colors-alist) 'words)
+ (0 (rainbow-colorize-by-assoc rainbow-html-colors-alist))))
+ (font-lock-add-keywords nil
+ `(,rainbow-html-colors-font-lock-keywords
+ ,@rainbow-html-rgb-colors-font-lock-keywords))))
+
+(defun rainbow-turn-off ()
+ "Turn off rainbow-mode."
+ (font-lock-remove-keywords
+ nil
+ (list
+ rainbow-hexadecimal-colors-font-lock-keywords
+ rainbow-html-colors-font-lock-keywords
+ rainbow-x-colors-font-lock-keywords
+ rainbow-html-rgb-colors-font-lock-keywords)))
+
+;;;###autoload
+(define-minor-mode rainbow-mode
+ "Colorize strings that represent colors.
+This will fontify with colors the string like \"#aabbcc\" or \"blue\""
+ :lighter " Rbow"
+ (progn
+ (if rainbow-mode
+ (rainbow-turn-on)
+ (rainbow-turn-off))
+ ;; Turn on font lock
+ (font-lock-mode 1)))
+
+(provide 'rainbow-mode)
diff --git a/emacs.d/sqlplus.el b/emacs.d/sqlplus.el
new file mode 100644
index 0000000..4d5e7d7
--- /dev/null
+++ b/emacs.d/sqlplus.el
@@ -0,0 +1,5151 @@
+;;; sqlplus.el --- User friendly interface to SQL*Plus and support for PL/SQL compilation
+
+;; Copyright (C) 2007, 2008 Peter Karpiuk, Scott Tiger S.A.
+
+;; Author: Peter Karpiuk <piotr.karpiuk (at) gmail (dot) com>
+;; Maintainer: Peter Karpiuk <piotr.karpiuk (at) gmail (dot) com>
+;; Created: 25 Nov 2007
+;; Version 0.9.0
+;; Keywords: sql sqlplus oracle plsql
+
+;; GNU Emacs 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.
+
+;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; Commentary:
+
+;; Facilitates interaction with Oracle via SQL*Plus (GNU Emacs only).
+;; Moreover, this package complements plsql.el (Kahlil Hodgson)
+;; upon convenient compilation of PL/SQL source files.
+;;
+;; This package was inspired by sqlplus-mode.el (Rob Riepel, Peter
+;; D. Pezaris, Martin Schwenke), but offers more features:
+;; - tables are parsed, formatted and rendered with colors, like in
+;; many GUI programs; you can see raw SQL*Plus output also,
+;; if you wish
+;; - table will be cutted if you try to fetch too many rows
+;; (SELECT * FROM MY_MILLION_ROWS_TABLE); current SQL*Plus command
+;; will be automatically interrupted under the hood in such cases
+;; - you can use many SQL*Plus processes simultaneously,
+;; - font locking (especially if you use Emacs>=22), with database
+;; object names highlighting,
+;; - history (log) of executed commands - see` sqlplus-history-dir`
+;; variable,
+;; - commands for fetching any database object definition
+;; (package, table/index/sequence script)
+;; - query result can be shown in HTML,
+;; - input buffer for each connection can be saved into file on
+;; disconnect and automatically restored on next connect (see
+;; 'sqlplus-session-cache-dir' variable); if you place some
+;; SQL*Plus commands between '/* init */' and '/* end */'
+;; comments in saved input buffer, they will be automatically
+;; executed on every connect
+;; - if you use plsql.el for editing PL/SQL files, you can compile
+;; such sources everytime with C-cC-c; error messages will be
+;; parsed and displayed for easy source navigation
+;; - M-. or C-mouse-1 on database object name will go to definition
+;; in filesystem (use arrow button on toolbar to go back)
+;;
+;; The following commands should be added to a global initialization
+;; file or to any user's .emacs file to conveniently use
+;; sqlplus-mode:
+;;
+;; (require 'sqlplus)
+;; (add-to-list 'auto-mode-alist '("\\.sqp\\'" . sqlplus-mode))
+;;
+;; If you want PL/SQL support also, try something like this:
+;;
+;; (require 'plsql)
+;; (setq auto-mode-alist
+;; (append '(("\\.pls\\'" . plsql-mode) ("\\.pkg\\'" . plsql-mode)
+;; ("\\.pks\\'" . plsql-mode) ("\\.pkb\\'" . plsql-mode)
+;; ("\\.sql\\'" . plsql-mode) ("\\.PLS\\'" . plsql-mode)
+;; ("\\.PKG\\'" . plsql-mode) ("\\.PKS\\'" . plsql-mode)
+;; ("\\.PKB\\'" . plsql-mode) ("\\.SQL\\'" . plsql-mode)
+;; ("\\.prc\\'" . plsql-mode) ("\\.fnc\\'" . plsql-mode)
+;; ("\\.trg\\'" . plsql-mode) ("\\.vw\\'" . plsql-mode)
+;; ("\\.PRC\\'" . plsql-mode) ("\\.FNC\\'" . plsql-mode)
+;; ("\\.TRG\\'" . plsql-mode) ("\\.VW\\'" . plsql-mode))
+;; auto-mode-alist ))
+;;
+;; M-x sqlplus will start new SQL*Plus session.
+;;
+;; C-RET execute command under point
+;; S-C-RET execute command under point and show result table in HTML
+;; buffer
+;; M-RET explain execution plan for command under point
+;; M-. or C-mouse-1: find database object definition (table, view
+;; index, synonym, trigger, procedure, function, package)
+;; in filesystem
+;; C-cC-s show database object definition (retrieved from database)
+;;
+;; Use describe-mode while in sqlplus-mode for further instructions.
+;;
+;; Many useful commands are defined in orcl-mode minor mode, which is
+;; common for input and otput SQL*Plus buffers, as well as PL/SQL
+;; buffers.
+;;
+;; For twiddling, see 'sqlplus' customization group.
+;;
+;; If you find this package useful, send me a postcard to address:
+;;
+;; Peter Karpiuk
+;; Scott Tiger S.A.
+;; ul. Gawinskiego 8
+;; 01-645 Warsaw
+;; Poland
+
+;;; Known bugs:
+
+;; 1. Result of SQL select command can be messed up if some columns
+;; has newline characters. To avoid this, execute SQL*Plus command
+;; column <colname> truncated
+;; before such select
+
+;;; Code:
+
+(require 'recentf)
+(require 'font-lock)
+(require 'cl)
+(require 'sql)
+(require 'tabify)
+(require 'skeleton)
+
+(defconst sqlplus-revision "$Revision: 1.7 $")
+
+;;; Variables -
+
+(defgroup sqlplus nil
+ "SQL*Plus"
+ :group 'tools
+ :version 21)
+
+(defcustom plsql-auto-parse-errors-flag t
+ "Non nil means parse PL/SQL compilation results and show them in the compilation buffer."
+ :group 'sqlplus
+ :type '(boolean))
+
+(defcustom sqlplus-init-sequence-start-regexp "/\\* init \\*/"
+ "SQL*Plus start of session init command sequence."
+ :group 'sqlplus
+ :type '(regexp))
+
+(defcustom sqlplus-init-sequence-end-regexp "/\\* end \\*/"
+ "SQL*Plus end of session init command sequence."
+ :group 'sqlplus
+ :type '(regexp))
+
+(defcustom sqlplus-explain-plan-warning-regexps '("TABLE ACCESS FULL" "INDEX FULL SCAN")
+ "SQL*Plus explain plan warning regexps"
+ :group 'sqlplus
+ :type '(repeat regexp))
+
+(defcustom sqlplus-syntax-faces
+ '((schema font-lock-type-face nil)
+ (table font-lock-type-face ("dual"))
+ (synonym font-lock-type-face nil)
+ (view font-lock-type-face nil)
+ (column font-lock-constant-face nil)
+ (sequence font-lock-type-face nil)
+ (package font-lock-type-face nil)
+ (trigger font-lock-type-face nil)
+ (index font-lock-type-face) nil)
+ "Font lock configuration for database object names in current schema.
+This is alist, and each element looks like (SYMBOL FACE LIST)
+where SYMBOL is one of: schema, table, synonym, view, column,
+sequence, package, trigger, index. Database objects means only
+objects from current schema, so if you want syntax highlighting
+for other objects (eg. 'dual' table name), you can explicitly
+enumerate them in LIST as strings."
+ :group 'sqlplus
+ :tag "Oracle SQL Syntax Faces"
+ :type '(repeat (list symbol face (repeat string))))
+
+(defcustom sqlplus-output-buffer-max-size (* 50 1000 1000)
+ "Maximum size of SQL*Plus output buffer.
+After exceeding oldest results are deleted."
+ :group 'sqlplus
+ :tag "SQL*Plus Output Buffer Max Size"
+ :type '(integer))
+
+(defcustom sqlplus-select-result-max-col-width nil
+ "Maximum width of column in displayed database table, or nil if there is no limit.
+If any cell value is longer, it will be cutted and terminated with ellipsis ('...')."
+ :group 'sqlplus
+ :tag "SQL*Plus Select Result Max Column Width"
+ :type '(choice integer (const nil)))
+
+(defcustom sqlplus-format-output-tables-flag t
+ "Non-nil means format result if it looks like database table."
+ :group 'sqlplus
+ :tag "SQL*Plus Format Output Table"
+ :type '(boolean))
+
+(defcustom sqlplus-kill-processes-without-query-on-exit-flag t
+ "Non-nil means silently kill all SQL*Plus processes on Emacs exit."
+ :group 'sqlplus
+ :tag "SQL*Plus Kill Processes Without Query On Exit"
+ :type '(boolean))
+
+(defcustom sqlplus-multi-output-tables-default-flag t
+ "Non-nil means render database table as set of adjacent tables so that they occupy all width of output window.
+For screen space saving and user comfort."
+ :group 'sqlplus
+ :tag "SQL*Plus Multiple Tables In Output by Default"
+ :type '(boolean))
+
+(defcustom sqlplus-source-buffer-readonly-by-default-flag t
+ "Non-nil means show database sources in read-only buffer."
+ :group 'sqlplus
+ :tag "SQL*Plus Source Buffer Read Only By Default"
+ :type '(boolean))
+
+(defcustom sqlplus-command "sqlplus"
+ "SQL*Plus interpreter program."
+ :group 'sqlplus
+ :tag "SQL*Plus Command"
+ :type '(string))
+
+(defcustom sqlplus-history-dir nil
+ "Directory of SQL*Plus command history (log) files, or nil (dont generate log files).
+History file name has format '<connect-string>-history.txt'."
+ :group 'sqlplus
+ :tag "SQL*Plus History Dir"
+ :type '(choice directory (const nil)))
+
+(defvar sqlplus-session-file-extension "sqp")
+
+(defcustom sqlplus-session-cache-dir nil
+ "Directory of SQL*Plus input buffer files, or nil (dont save user session).
+Session file name has format '<connect-string>.sqp'"
+ :group 'sqlplus
+ :tag "SQL*Plus History Dir"
+ :type '(choice directory (const nil)))
+
+(defcustom sqlplus-save-passwords nil
+ "Non-nil means save passwords between Emacs sessions. (Not implemented yet)."
+ :group 'sqlplus
+ :tag "SQL*Plus Save Passwords"
+ :type '(boolean))
+
+(defcustom sqlplus-pagesize 200
+ "Approximate number of records in query results.
+If result has more rows, it will be cutted and terminated with '. . .' line."
+ :group 'sqlplus
+ :tag "SQL*Plus Max Rows Count"
+ :type '(integer))
+
+(defvar sqlplus-default-wrap "on")
+
+(defcustom sqlplus-initial-strings
+ (list "set sqlnumber off"
+ "set tab off"
+ "set linesize 4000"
+ "set echo off"
+ "set newpage 1"
+ "set space 1"
+ "set feedback 6"
+ "set heading on"
+ "set trimspool off"
+ (format "set wrap %s" sqlplus-default-wrap)
+ "set timing on"
+ "set feedback on")
+ "Initial commands to send to interpreter.
+Customizing this variable is dangerous."
+ :group 'sqlplus
+ :tag "SQL*Plus Initial Strings"
+ :type '(repeat string))
+
+(defcustom sqlplus-table-col-separator " | "
+ "Database table column separator (text-only terminals)."
+ :group 'sqlplus
+ :tag "SQL*Plus Table Col Separator"
+ :type '(string))
+
+(defcustom sqlplus-table-col-head-separator "-+-"
+ "Database table header-column separator (text-only terminals)."
+ :group 'sqlplus
+ :tag "SQL*Plus Table Col Separator"
+ :type '(string))
+
+(defcustom sqlplus-html-output-file-name "$HOME/sqlplus_report.html"
+ "Output file for HTML result."
+ :group 'sqlplus
+ :tag "SQL*Plus HTML Output File Name"
+ :type '(file))
+
+(defcustom sqlplus-html-output-encoding "iso-8859-1"
+ "Encoding for SQL*Plus HTML output."
+ :group 'sqlplus
+ :tag "SQL*Plus HTML Output Encoding"
+ :type '(string))
+
+(defcustom sqlplus-html-output-sql t
+ "Non-nil means put SQL*Plus command in head of HTML result."
+ :group 'sqlplus
+ :tag "SQL*Plus HTML Output Encoding"
+ :type '(choice (const :tag "Elegant" 'elegant)
+ (const :tag "Simple" t)
+ (const :tag "No" nil)))
+
+(defcustom sqlplus-html-output-header (concat (current-time-string) "<br><br>")
+ "HTML header sexp (result must be string)."
+ :group 'sqlplus
+ :tag "SQL*Plus HTML Output Header"
+ :type '(sexp))
+
+(defcustom sqlplus-command-highlighting-percentage 7
+ "SQL*Plus command highlighting percentage (0-100), only if sqlplus-command-highlighting-style is set."
+ :group 'sqlplus
+ :tag "SQL*Plus command highlighting percentage"
+ :type '(integer))
+
+(defcustom sqlplus-command-highlighting-style nil
+ "How to highlight current command in sqlplus buffer."
+ :group 'sqlplus
+ :tag "SQL*Plud command highlighting style"
+ :type '(choice (const :tag "Fringe" fringe)
+ (const :tag "Background" background)
+ (const :tag "Fringe and background" fringe-and-background)
+ (const :tag "None" nil)))
+
+(defvar sqlplus-elegant-style window-system)
+
+(defvar sqlplus-cs nil)
+
+(defun sqlplus-shine-color (color percent)
+ (when (equal color "unspecified-bg")
+ (setq color (if (< percent 0) "white" "black")))
+ (apply 'format "#%02x%02x%02x"
+ (mapcar (lambda (value)
+ (min 65535 (max 0 (* (+ (/ value 650) percent) 650))))
+ (color-values color))))
+
+(defvar sqlplus-table-head-face 'sqlplus-table-head-face)
+(defface sqlplus-table-head-face
+ (list
+ (list '((class mono))
+ '(:inherit default :weight bold :inverse-video t))
+ (list '((background light))
+ (append (list :inherit 'default :background (sqlplus-shine-color (face-background 'default) -70) :foreground (face-background 'default))
+ (when (and sqlplus-elegant-style (>= emacs-major-version 22)) '(:box (:style released-button)))))
+ (list '((background dark))
+ (append (list :inherit 'default :background (sqlplus-shine-color (face-background 'default) +70) :foreground (face-background 'default))
+ (when (and sqlplus-elegant-style (>= emacs-major-version 22)) '(:box (:style released-button)))))
+ '(t (:inherit default)))
+ "Face for table header"
+ :group 'sqlplus)
+
+(defvar sqlplus-table-even-rows-face 'sqlplus-table-even-rows-face)
+(defface sqlplus-table-even-rows-face
+ (list
+ (list '((class mono)) '())
+ (list '((type tty)) '())
+ (list '((background light))
+ (append (list :inherit 'default :background (sqlplus-shine-color (face-background 'default) -20) :overline (face-background 'default))))
+ (list '((background dark))
+ (append (list :inherit 'default :background (sqlplus-shine-color (face-background 'default) +20) :overline (face-background 'default))))
+ '(t ()))
+ "Face for table even rows"
+ :group 'sqlplus)
+
+(defvar sqlplus-table-odd-rows-face 'sqlplus-table-odd-rows-face)
+(defface sqlplus-table-odd-rows-face
+ (list
+ (list '((class mono)) '(:inherit default))
+ (list '((background light))
+ (append (list :inherit 'default :background (sqlplus-shine-color (face-background 'default) -30) :overline (face-background 'default))))
+ (list '((background dark))
+ (append (list :inherit 'default :background (sqlplus-shine-color (face-background 'default) +30) :overline (face-background 'default))))
+ '(t (:inherit default)))
+ "Face for table even rows"
+ :group 'sqlplus)
+
+(defvar sqlplus-command-highlight-face 'sqlplus-command-highlight-face)
+(defface sqlplus-command-highlight-face
+ (list
+ '(((class mono)) ())
+ '(((type tty)) ())
+ (list '((background light))
+ (append (list :background (sqlplus-shine-color (face-background 'default) (- sqlplus-command-highlighting-percentage)))))
+ (list '((background dark))
+ (append (list :background (sqlplus-shine-color (face-background 'default) sqlplus-command-highlighting-percentage))))
+ '(t ()))
+ "Face for highlighting command under point"
+ :group 'sqlplus)
+
+(defvar sqlplus-plsql-compilation-results-buffer-name "*PL/SQL Compilation*")
+
+(defvar sqlplus-fan "|"
+ "Local in input buffers")
+(make-variable-buffer-local 'sqlplus-fan)
+
+(defvar orcl-mode-map nil
+ "Keymap used in Orcl mode.")
+
+(define-minor-mode orcl-mode
+ "Mode for executing SQL*Plus commands and scrolling results.
+
+Mode Specific Bindings:
+
+\\{orcl-mode-map}"
+ nil ; init value
+ (" " (:eval sqlplus-fan) " " (:eval (connect-string-to-string))) ; mode indicator
+ orcl-mode-map ; keymap
+ ;; body
+ (setq sqlplus-fan "|")
+ (unless (assq 'orcl-mode minor-mode-map-alist)
+ (push (cons 'orcl-mode orcl-mode-map) minor-mode-map-alist)))
+
+(defvar sqlplus-user-variables (makehash 'equal))
+
+(defvar sqlplus-user-variables-history nil)
+
+(defvar sqlplus-get-source-history nil)
+
+(defvar sqlplus-process-p nil
+ "Non-nil (connect string) if current buffer is SQL*Plus process buffer.
+Local in process buffer.")
+(make-variable-buffer-local 'sqlplus-process-p)
+
+(defvar sqlplus-command-seq 0
+ "Sequence for command id within SQL*Plus connection.
+Local in process buffer.")
+(make-variable-buffer-local 'sqlplus-command-seq)
+
+;;; :id - unique command identifier (from sequence, for session)
+;;; :sql - content of command
+;;; :dont-parse-result - process data online as it comes from sqlplus, with sqlplus-result-online or with :result-function function
+;;; :result-function - function for processing sqlplus data; must have signature (context connect-string begin end interrupted);
+;;; if nil then it is sqlplus-result-online for :dont-parse-result set to non-nil and sqlplus-process-command-output for :dont-parse-result set to nil
+;;; :current-command-input-buffer-name - buffer name from which command was initialized
+(defvar sqlplus-command-contexts nil
+ "Command options list, for current and enqueued commands, in chronological order.
+Local in process buffer.")
+(make-variable-buffer-local 'sqlplus-command-contexts)
+
+(defvar sqlplus-connect-string nil
+ "Local variable with connect-string for current buffer (input buffers, output buffer).")
+(make-variable-buffer-local 'sqlplus-connect-string)
+
+(defvar sqlplus-connect-strings-alist nil
+ "Connect strings in format (CS . PASSWD), where PASSWD can be nil.")
+
+(defvar sqlplus-connect-string-history nil)
+
+(defvar sqlplus-prompt-prefix "SQL[")
+(defvar sqlplus-prompt-suffix "]# ")
+
+(defvar sqlplus-page-separator "@!%#!")
+
+(defvar sqlplus-repfooter "##%@!")
+
+(defvar sqlplus-mode-map nil
+ "Keymap used in SQL*Plus mode.")
+
+(defvar sqlplus-output-separator "@--"
+ "String printed between sets of SQL*Plus command output.")
+
+;;; Markers -
+
+(defvar sqlplus-buffer-mark (make-marker)
+ "Marks the current SQL command in the SQL*Plus output buffer.
+Local in output buffer.")
+(make-variable-buffer-local 'sqlplus-buffer-mark)
+
+(defvar sqlplus-region-beginning-pos nil
+ "Marks the beginning of the region to sent to the SQL*Plus process.
+Local in input buffer with sqlplus-mode.")
+(make-variable-buffer-local 'sqlplus-region-beginning-pos)
+
+(defvar sqlplus-region-end-pos nil
+ "Marks the end of the region to sent to the SQL*Plus process.
+Local in input buffer with sqlplus-mode.")
+(make-variable-buffer-local 'sqlplus-region-end-pos)
+
+(defvar sqlplus-connections-menu
+ '("SQL*Plus"
+ :filter sqlplus-connections-menu)
+ "Menu for database connections")
+
+(defconst sqlplus-kill-xpm "\
+/* XPM */
+static char * reload_page_xpm[] = {
+\"24 24 100 2\",
+\" c None\",
+\". c #000000\",
+\"+ c #2A5695\",
+\"@ c #30609E\",
+\"# c #3363A2\",
+\"$ c #3969A6\",
+\"% c #3D6BA6\",
+\"& c #3C68A3\",
+\"* c #35619C\",
+\"= c #244F8D\",
+\"- c #3364A3\",
+\"; c #3162A1\",
+\"> c #3867A4\",
+\", c #3F6DA8\",
+\"' c #4672AC\",
+\") c #4B76AE\",
+\"! c #4E78AF\",
+\"~ c #537CB1\",
+\"{ c #547DB0\",
+\"] c #446BA1\",
+\"^ c #2E5D9C\",
+\"/ c #234F8C\",
+\"( c #214C89\",
+\"_ c #244E8C\",
+\": c #3A649D\",
+\"< c #517BB0\",
+\"[ c #517BB1\",
+\"} c #4874AD\",
+\"| c #6086B7\",
+\"1 c #5F84B4\",
+\"2 c #4B71A6\",
+\"3 c #7B9BC4\",
+\"4 c #224C89\",
+\"5 c #3865A2\",
+\"6 c #406FAB\",
+\"7 c #436BA3\",
+\"8 c #648ABA\",
+\"9 c #4D78AF\",
+\"0 c #4B77AE\",
+\"a c #6E91BE\",
+\"b c #809EC6\",
+\"c c #204A87\",
+\"d c #4974AF\",
+\"e c #2B5590\",
+\"f c #6487B5\",
+\"g c #678CBB\",
+\"h c #3465A4\",
+\"i c #84A1C8\",
+\"j c #6D8FBA\",
+\"k c #4F7AB0\",
+\"l c #8BA7CB\",
+\"m c #7E9DC5\",
+\"n c #83A1C7\",
+\"o c #91ACCE\",
+\"p c #89A4C9\",
+\"q c #8FA9CB\",
+\"r c #85A2C7\",
+\"s c #90ABCC\",
+\"t c #3E6CA8\",
+\"u c #87A3C8\",
+\"v c #4B6DA1\",
+\"w c #91ABCD\",
+\"x c #3768A5\",
+\"y c #8AA5C9\",
+\"z c #2D5690\",
+\"A c #204A86\",
+\"B c #93ADCE\",
+\"C c #7294BF\",
+\"D c #6288B9\",
+\"E c #86A3C8\",
+\"F c #466EA3\",
+\"G c #3864A1\",
+\"H c #285390\",
+\"I c #234E8C\",
+\"J c #95AECF\",
+\"K c #7493BC\",
+\"L c #86A2C7\",
+\"M c #7999C3\",
+\"N c #5B82B5\",
+\"O c #6C8EBB\",
+\"P c #4B71A5\",
+\"Q c #26508B\",
+\"R c #2B5792\",
+\"S c #305E9B\",
+\"T c #31619F\",
+\"U c #7895BD\",
+\"V c #819DC3\",
+\"W c #688DBB\",
+\"X c #6288B8\",
+\"Y c #5880B4\",
+\"Z c #577FB3\",
+\"` c #547DB2\",
+\" . c #416FAA\",
+\".. c #3564A2\",
+\"+. c #577AAB\",
+\"@. c #6286B6\",
+\"#. c #668BBA\",
+\"$. c #507AB0\",
+\"%. c #426EA8\",
+\"&. c #2F5B97\",
+\" \",
+\" \",
+\" \",
+\" . . . . . . . . \",
+\" . . + @ # $ % & * . . . . \",
+\" . = - ; @ > , ' ) ! ~ { . . . ] . \",
+\" . ^ / ( _ . . . : < [ } | 1 2 3 . \",
+\" . _ 4 5 6 . . . 7 8 9 0 a b . \",
+\" . c d . . . e f g h i . \",
+\" . . . . . j k h l . \",
+\" . . f m n l o . \",
+\" . . . . . . . . \",
+\" . . . . . . . . \",
+\" . p q q q r . . \",
+\" . s , t u v . . . . \",
+\" . w x | y z . . . . A . \",
+\" . B C 9 D E F . . . G H I . \",
+\" . J K L M N C O P . . . Q R S T . \",
+\" . U . . . V W X | Y Z ` ) .... \",
+\" . . . . +.@.#.N $.%.&.. . \",
+\" . . . . . . . . \",
+\" \",
+\" \",
+\" \"};
+"
+ "XPM format image used as Kill icon")
+
+(defconst sqlplus-cancel-xpm "\
+/* XPM */
+static char * process_stop_xpm[] = {
+\"24 24 197 2\",
+\" c None\",
+\". c #000000\",
+\"+ c #C92B1E\",
+\"@ c #DA432F\",
+\"# c #E95941\",
+\"$ c #F26B50\",
+\"% c #ED6047\",
+\"& c #DF4A35\",
+\"* c #CE3324\",
+\"= c #BF1D13\",
+\"- c #EA5942\",
+\"; c #EF563A\",
+\"> c #F14D2C\",
+\", c #F1431F\",
+\"' c #F23A12\",
+\") c #F2421C\",
+\"! c #F24D2A\",
+\"~ c #F15737\",
+\"{ c #F0644A\",
+\"] c #CF3121\",
+\"^ c #D83828\",
+\"/ c #ED5840\",
+\"( c #EC3B1C\",
+\"_ c #EE310B\",
+\": c #F1350C\",
+\"< c #F4380D\",
+\"[ c #F53A0D\",
+\"} c #F53B0D\",
+\"| c #F4390D\",
+\"1 c #F2360C\",
+\"2 c #EF3A15\",
+\"3 c #F05A3D\",
+\"4 c #E44D37\",
+\"5 c #CD2B1E\",
+\"6 c #EA4D35\",
+\"7 c #E92D0C\",
+\"8 c #ED2F0B\",
+\"9 c #F0330C\",
+\"0 c #F3380D\",
+\"a c #F63C0E\",
+\"b c #F93F0F\",
+\"c c #F9400F\",
+\"d c #F73D0E\",
+\"e c #F1340C\",
+\"f c #EE300B\",
+\"g c #EC482C\",
+\"h c #E04532\",
+\"i c #E84E3A\",
+\"j c #E62A0E\",
+\"k c #EA2B0A\",
+\"l c #F83F0E\",
+\"m c #FC4310\",
+\"n c #FC4410\",
+\"o c #F63B0E\",
+\"p c #EB2C0A\",
+\"q c #EB5139\",
+\"r c #C8251A\",
+\"s c #DD3D2E\",
+\"t c #E5341D\",
+\"u c #E62508\",
+\"v c #F9BEB2\",
+\"w c #FBCFC5\",
+\"x c #F54C23\",
+\"y c #F95125\",
+\"z c #FDD4CB\",
+\"A c #FABFB2\",
+\"B c #E83013\",
+\"C c #E84F3B\",
+\"D c #E54737\",
+\"E c #E22007\",
+\"F c #E92A09\",
+\"G c #FBD2CA\",
+\"H c #FFFFFF\",
+\"I c #FDDFD9\",
+\"J c #F64E24\",
+\"K c #FDE0D9\",
+\"L c #E72609\",
+\"M c #E7452F\",
+\"N c #E33D2D\",
+\"O c #E11E07\",
+\"P c #E52308\",
+\"Q c #E82809\",
+\"R c #EC3F21\",
+\"S c #FCDED8\",
+\"T c #F55C37\",
+\"U c #FCDFD8\",
+\"V c #F04521\",
+\"W c #EC2E0A\",
+\"X c #E92909\",
+\"Y c #E62408\",
+\"Z c #E53823\",
+\"` c #CE2B1F\",
+\" . c #C62018\",
+\".. c #E03120\",
+\"+. c #E01C06\",
+\"@. c #E32107\",
+\"#. c #ED4121\",
+\"$. c #FEF9F8\",
+\"%. c #E72709\",
+\"&. c #E42208\",
+\"*. c #E32D17\",
+\"=. c #D83729\",
+\"-. c #CB231B\",
+\";. c #DE2A1B\",
+\">. c #DE1A06\",
+\",. c #EE5135\",
+\"'. c #EF5335\",
+\"). c #EC2D0A\",
+\"!. c #E82709\",
+\"~. c #E21F07\",
+\"{. c #E02511\",
+\"]. c #DC392C\",
+\"^. c #BE1612\",
+\"/. c #DD2E21\",
+\"(. c #DC1705\",
+\"_. c #DF1B06\",
+\":. c #E42308\",
+\"<. c #E93A20\",
+\"[. c #FBDDD8\",
+\"}. c #EB3D20\",
+\"|. c #DF2A18\",
+\"1. c #D02A1F\",
+\"2. c #DC3328\",
+\"3. c #DA1404\",
+\"4. c #DD1805\",
+\"5. c #E3331E\",
+\"6. c #FADCD8\",
+\"7. c #FBDCD8\",
+\"8. c #EB4C34\",
+\"9. c #E6361F\",
+\"0. c #DD1905\",
+\"a. c #DF2F21\",
+\"b. c #C21A14\",
+\"c. c #DA3128\",
+\"d. c #D81408\",
+\"e. c #F7C9C4\",
+\"f. c #FADBD8\",
+\"g. c #E5341E\",
+\"h. c #E5351E\",
+\"i. c #F8CEC9\",
+\"j. c #DB1505\",
+\"k. c #DD3429\",
+\"l. c #C31613\",
+\"m. c #D9281F\",
+\"n. c #D71003\",
+\"o. c #D91304\",
+\"p. c #F3B5B0\",
+\"q. c #F7CDC9\",
+\"r. c #E12F1D\",
+\"s. c #DF1C06\",
+\"t. c #E2301D\",
+\"u. c #F4B6B0\",
+\"v. c #DC1605\",
+\"w. c #DB2317\",
+\"x. c #D2271F\",
+\"y. c #D1231D\",
+\"z. c #D61A10\",
+\"A. c #D60F03\",
+\"B. c #D81104\",
+\"C. c #DB1605\",
+\"D. c #D81204\",
+\"E. c #D81509\",
+\"F. c #DA2F26\",
+\"G. c #D52620\",
+\"H. c #D51A12\",
+\"I. c #D50D03\",
+\"J. c #D60E03\",
+\"K. c #D6170D\",
+\"L. c #D92B23\",
+\"M. c #BD100D\",
+\"N. c #AB0404\",
+\"O. c #CE1D19\",
+\"P. c #D6231C\",
+\"Q. c #D41008\",
+\"R. c #D40B02\",
+\"S. c #D40C02\",
+\"T. c #D50C03\",
+\"U. c #D40E05\",
+\"V. c #D62018\",
+\"W. c #D4251F\",
+\"X. c #B30A09\",
+\"Y. c #A20000\",
+\"Z. c #BC0F0E\",
+\"`. c #D2211E\",
+\" + c #D52520\",
+\".+ c #D5201A\",
+\"++ c #D41A14\",
+\"@+ c #D51F19\",
+\"#+ c #D62620\",
+\"$+ c #D52420\",
+\"%+ c #C51614\",
+\"&+ c #A30101\",
+\"*+ c #A30303\",
+\"=+ c #AE0909\",
+\"-+ c #BD0E0E\",
+\";+ c #B30B0B\",
+\">+ c #A30404\",
+\" \",
+\" . . . . . . . \",
+\" . . + @ # $ % & * . . \",
+\" . = - ; > , ' ) ! ~ { ] . \",
+\" . ^ / ( _ : < [ } | 1 2 3 4 . \",
+\" . 5 6 7 8 9 0 a b c d | e f g h . \",
+\" . i j k f : [ l m n c o 1 _ p q r . \",
+\" . s t u k v w x l m n y z A _ p B C . \",
+\" . D E u F G H I J b y K H w f k L M . \",
+\" . N O P Q R S H I T K H U V W X Y Z ` . \",
+\" . ...+.@.u F #.S H $.H U V 8 k %.&.*.=.. \",
+\" . -.;.>.O &.L F ,.$.H $.'.).k !.P ~.{.].. \",
+\" . ^./.(._.~.:.<.[.H $.H [.}.L P E +.|.1.. \",
+\" . 2.3.4._.5.6.H 7.8.7.H 6.9.~.+.0.a.b.. \",
+\" . c.d.3.(.e.H f.g.@.h.6.H i._.4.j.k.. \",
+\" . l.m.n.o.p.q.r._.s.s.t.e.u.v.3.w.x.. \",
+\" . y.z.A.B.o.j.C.(.(.v.j.3.D.E.F.. \",
+\" . G.H.I.J.n.B.B.B.B.n.A.K.L.M.. \",
+\" . N.O.P.Q.R.S.T.T.S.U.V.W.X.. \",
+\" . Y.Z.`. +.+++@+#+$+%+&+. \",
+\" . . . *+=+-+;+>+Y.. . \",
+\" . . . . . . \",
+\" \",
+\" \"};
+"
+ "XPM format image used as Cancel icon")
+
+(defconst sqlplus-rollback-xpm "\
+/* XPM */
+static char * rollback_xpm[] = {
+\"24 24 228 2\",
+\" c None\",
+\". c #000000\",
+\"+ c #F8F080\",
+\"@ c #FEF57B\",
+\"# c #FFF571\",
+\"$ c #FFF164\",
+\"% c #FFED58\",
+\"& c #FFE748\",
+\"* c #FEDE39\",
+\"= c #F8F897\",
+\"- c #FFFE96\",
+\"; c #FFFA8A\",
+\"> c #FFF67C\",
+\", c #FFF16E\",
+\"' c #FFEC62\",
+\") c #FFE956\",
+\"! c #FFE448\",
+\"~ c #FFE03C\",
+\"{ c #FFDD30\",
+\"] c #FED821\",
+\"^ c #F1CB15\",
+\"/ c #FFFC92\",
+\"( c #FFFC91\",
+\"_ c #FFFC90\",
+\": c #FFFB8D\",
+\"< c #FFF67D\",
+\"[ c #FFEB5E\",
+\"} c #FFEA5B\",
+\"| c #FFE958\",
+\"1 c #FFE855\",
+\"2 c #FFE752\",
+\"3 c #FDD41C\",
+\"4 c #FDD319\",
+\"5 c #FDD416\",
+\"6 c #FFFF9D\",
+\"7 c #FFFF99\",
+\"8 c #FFFD94\",
+\"9 c #FFFA89\",
+\"0 c #FFDC2F\",
+\"a c #FED315\",
+\"b c #FFD808\",
+\"c c #FFFC9F\",
+\"d c #FFFE99\",
+\"e c #FFDF3B\",
+\"f c #F7C909\",
+\"g c #F8EA86\",
+\"h c #FEFCB7\",
+\"i c #FFFDA6\",
+\"j c #FFFA91\",
+\"k c #FFF681\",
+\"l c #FFF171\",
+\"m c #FFED64\",
+\"n c #FFE44A\",
+\"o c #FFE03D\",
+\"p c #FEDB2F\",
+\"q c #F9D21E\",
+\"r c #E9BC0F\",
+\"s c #CE9C02\",
+\"t c #F3E36A\",
+\"u c #FCF899\",
+\"v c #FFFCA3\",
+\"w c #FEF694\",
+\"x c #FFF284\",
+\"y c #FFEE71\",
+\"z c #FFEA62\",
+\"A c #FDDC40\",
+\"B c #F8D22F\",
+\"C c #F1C61B\",
+\"D c #DDAD0A\",
+\"E c #CC9A02\",
+\"F c #C89500\",
+\"G c #F4EA77\",
+\"H c #F7EF7F\",
+\"I c #FFF16A\",
+\"J c #FFEF68\",
+\"K c #FFEE66\",
+\"L c #FED622\",
+\"M c #FED51E\",
+\"N c #FED419\",
+\"O c #E9B90E\",
+\"P c #E7B509\",
+\"Q c #D4A202\",
+\"R c #CA9700\",
+\"S c #F6E67C\",
+\"T c #F3E67F\",
+\"U c #FCEE7A\",
+\"V c #FDEB66\",
+\"W c #FEE44E\",
+\"X c #FED313\",
+\"Y c #FDCA03\",
+\"Z c #F2BE01\",
+\"` c #D4A60D\",
+\" . c #D4A206\",
+\".. c #D19C00\",
+\"+. c #CF9800\",
+\"@. c #E3AF02\",
+\"#. c #F9EB81\",
+\"$. c #FBF096\",
+\"%. c #F9E67C\",
+\"&. c #F8DC5F\",
+\"*. c #F8D548\",
+\"=. c #F9D02D\",
+\"-. c #F9C915\",
+\";. c #F7C104\",
+\">. c #EEB606\",
+\",. c #E9B704\",
+\"'. c #DEAE08\",
+\"). c #414D7B\",
+\"!. c #3C5CA2\",
+\"~. c #3A65B3\",
+\"{. c #3668BB\",
+\"]. c #325EAF\",
+\"^. c #F3E46E\",
+\"/. c #FCFA9B\",
+\"(. c #FFF89C\",
+\"_. c #FDEC81\",
+\":. c #FCE668\",
+\"<. c #FDDF4E\",
+\"[. c #FCDA3C\",
+\"}. c #FCD52E\",
+\"|. c #FAD026\",
+\"1. c #4662A2\",
+\"2. c #465A8D\",
+\"3. c #3F6CBA\",
+\"4. c #3A68B7\",
+\"5. c #2E529E\",
+\"6. c #2655AC\",
+\"7. c #F0DC69\",
+\"8. c #FBF78C\",
+\"9. c #FFF880\",
+\"0. c #FFF06B\",
+\"a. c #FFE03E\",
+\"b. c #FFD828\",
+\"c. c #FED015\",
+\"d. c #F5C40A\",
+\"e. c #4B70B4\",
+\"f. c #4870B7\",
+\"g. c #3C5CA1\",
+\"h. c #4070BF\",
+\"i. c #3759A0\",
+\"j. c #1D469C\",
+\"k. c #214493\",
+\"l. c #F2DD6C\",
+\"m. c #F8EB7E\",
+\"n. c #FBEE7A\",
+\"o. c #FBE461\",
+\"p. c #FADB48\",
+\"q. c #FBD631\",
+\"r. c #FED10F\",
+\"s. c #FECD07\",
+\"t. c #F1BD00\",
+\"u. c #456AAE\",
+\"v. c #4C7ECA\",
+\"w. c #487AC8\",
+\"x. c #35528F\",
+\"y. c #1B4294\",
+\"z. c #1B4193\",
+\"A. c #F9EA83\",
+\"B. c #FCF08E\",
+\"C. c #F6E16E\",
+\"D. c #F4D559\",
+\"E. c #F5CF45\",
+\"F. c #F6CB2E\",
+\"G. c #F8C611\",
+\"H. c #F6C005\",
+\"I. c #E8B300\",
+\"J. c #4268AE\",
+\"K. c #4375C4\",
+\"L. c #3F71C1\",
+\"M. c #33569B\",
+\"N. c #173F94\",
+\"O. c #183A8B\",
+\"P. c #F3E36E\",
+\"Q. c #FCF7A1\",
+\"R. c #FEF9A1\",
+\"S. c #FEEE7D\",
+\"T. c #FCE360\",
+\"U. c #FAD946\",
+\"V. c #F9D132\",
+\"W. c #F8CD26\",
+\"X. c #F7CA20\",
+\"Y. c #3B589A\",
+\"Z. c #395FA9\",
+\"`. c #3359A5\",
+\" + c #3056A3\",
+\".+ c #2B468D\",
+\"++ c #0A3897\",
+\"@+ c #E6D465\",
+\"#+ c #FDFA90\",
+\"$+ c #FFF885\",
+\"%+ c #FFF074\",
+\"&+ c #FFEA60\",
+\"*+ c #FFE246\",
+\"=+ c #FFDC31\",
+\"-+ c #FED51F\",
+\";+ c #F7CB14\",
+\">+ c #173788\",
+\",+ c #063494\",
+\"'+ c #E8DE7B\",
+\")+ c #FFFA86\",
+\"!+ c #FFF26A\",
+\"~+ c #FFE84F\",
+\"{+ c #FFD415\",
+\"]+ c #FDCC04\",
+\"^+ c #F3C001\",
+\"/+ c #EBB600\",
+\"(+ c #E3AF01\",
+\"_+ c #D7A100\",
+\":+ c #2D3E7F\",
+\"<+ c #033396\",
+\"[+ c #CFB954\",
+\"}+ c #DBC347\",
+\"|+ c #DEBF2C\",
+\"1+ c #DFB718\",
+\"2+ c #DFB206\",
+\"3+ c #D6A505\",
+\"4+ c #C6970A\",
+\"5+ c #B48413\",
+\"6+ c #374682\",
+\"7+ c #023398\",
+\"8+ c #0E3287\",
+\"9+ c #253775\",
+\"0+ c #05318F\",
+\"a+ c #10358B\",
+\"b+ c #183888\",
+\"c+ c #053495\",
+\"d+ c #0E348D\",
+\"e+ c #183585\",
+\" . . . . . . . \",
+\" . . + @ # $ % & * . . . \",
+\" . = - ; > , ' ) ! ~ { ] ^ . \",
+\". / ( _ : ; < [ } | 1 2 3 4 5 . \",
+\". 6 7 8 9 > , ' ) ! ~ 0 ] a b . \",
+\". c d 8 9 > , ' ) ! e 0 ] a f . \",
+\". g h i j k l m | n o p q r s . \",
+\". t u v w x y z 2 A B C D E F . \",
+\". G H I J K L M N O P Q R F F . \",
+\". S T U V W p X Y Z ` ...+.@.. . . . . \",
+\". #.$.%.&.*.=.-.;.>.. . ,.'.. ).!.~.{.].. \",
+\". ^./.(._.:.<.[.}.|.. 1.. . 2.3.4.. . 5.6.. \",
+\". 7.8.9.0.) a.b.c.d.. e.f.g.h.i.. . j.k.. \",
+\". l.m.n.o.p.q.r.s.t.. u.v.w.x.. . y.z.. \",
+\". A.B.C.D.E.F.G.H.I.. J.K.L.M.. . N.O.. \",
+\". P.Q.R.S.T.U.V.W.X.. Y.Z.`. +.+. . ++. \",
+\". @+#+$+%+&+*+=+-+;+. . . . . . . . >+,+. \",
+\" . '+)+!+~+{ {+]+^+/+(+_+. . :+<+. \",
+\" . . [+}+|+1+2+3+4+5+. . 6+7+8+. \",
+\" . . . . . . . . . 9+0+a+. \",
+\" . b+c+d+. \",
+\" . e+. . \",
+\" . \",
+\" \"};
+"
+ "XPM format image used as Rollback icon")
+
+(defconst sqlplus-commit-xpm "\
+/* XPM */
+static char * commit_xpm[] = {
+\"24 24 276 2\",
+\" c None\",
+\". c #000000\",
+\"+ c #FDF57D\",
+\"@ c #FFF676\",
+\"# c #FFF36C\",
+\"$ c #FFF05D\",
+\"% c #FFEB51\",
+\"& c #FFE445\",
+\"* c #FDDC35\",
+\"= c #EFEA85\",
+\"- c #FBF68D\",
+\"; c #FCF482\",
+\"> c #FCF178\",
+\", c #FCEE6E\",
+\"' c #FCEB66\",
+\") c #FCE85B\",
+\"! c #FCE551\",
+\"~ c #FDE147\",
+\"{ c #FDDF3D\",
+\"] c #FEDD2D\",
+\"^ c #FCD621\",
+\"/ c #E5BF16\",
+\"( c #D8D479\",
+\"_ c #FCF587\",
+\": c #FAEF78\",
+\"< c #FAEA6B\",
+\"[ c #FAEA6A\",
+\"} c #FAE968\",
+\"| c #FAE967\",
+\"1 c #FAE865\",
+\"2 c #FAE864\",
+\"3 c #FDDD3C\",
+\"4 c #FED621\",
+\"5 c #FFD51D\",
+\"6 c #FFD51B\",
+\"7 c #FFD519\",
+\"8 c #D8B82B\",
+\"9 c #FCF790\",
+\"0 c #FBF587\",
+\"a c #F8EF7D\",
+\"b c #F8EC75\",
+\"c c #F7E86B\",
+\"d c #F8E868\",
+\"e c #F9E663\",
+\"f c #F9E45A\",
+\"g c #F9E253\",
+\"h c #F9E04C\",
+\"i c #FBDD40\",
+\"j c #FBDB38\",
+\"k c #FAD933\",
+\"l c #FAD529\",
+\"m c #FDD810\",
+\"n c #FFFD9E\",
+\"o c #FFFF9A\",
+\"p c #FFFE96\",
+\"q c #FFFB8C\",
+\"r c #FFF781\",
+\"s c #FFF375\",
+\"t c #FFEF69\",
+\"u c #FFEA5B\",
+\"v c #FFE750\",
+\"w c #FFE345\",
+\"x c #FFDF38\",
+\"y c #FFDB2B\",
+\"z c #FFD81F\",
+\"A c #FFD313\",
+\"B c #FBD007\",
+\"C c #FBF090\",
+\"D c #FFFDAE\",
+\"E c #FFFEA2\",
+\"F c #FFFA8C\",
+\"G c #FFF780\",
+\"H c #F6CA11\",
+\"I c #E1AF03\",
+\"J c #F4E36D\",
+\"K c #FCF7A4\",
+\"L c #FFFEBB\",
+\"M c #FEFAA6\",
+\"N c #FFF990\",
+\"O c #FFF57E\",
+\"P c #FFEE6F\",
+\"Q c #FFEB61\",
+\"R c #FFE856\",
+\"S c #FFE34A\",
+\"T c #FBDD44\",
+\"U c #F7D535\",
+\"V c #EBBF13\",
+\"W c #D5A406\",
+\"X c #C99500\",
+\"Y c #F0DC5F\",
+\"Z c #F3E772\",
+\"` c #F7EC76\",
+\" . c #F6E56D\",
+\".. c #F6E369\",
+\"+. c #F6E264\",
+\"@. c #F5DF5C\",
+\"#. c #F3DB53\",
+\"$. c #F3D849\",
+\"%. c #EFD245\",
+\"&. c #ECCE3F\",
+\"*. c #E3B91F\",
+\"=. c #D3A40B\",
+\"-. c #C99600\",
+\";. c #C69200\",
+\">. c #EED95E\",
+\",. c #EDDA60\",
+\"'. c #F1DF64\",
+\"). c #F2DF5E\",
+\"!. c #F2DD57\",
+\"~. c #F2D94E\",
+\"{. c #F2D644\",
+\"]. c #EFD038\",
+\"^. c #ECCB34\",
+\"/. c #E6C430\",
+\"(. c #DFB71F\",
+\"_. c #D9AD17\",
+\":. c #CC9907\",
+\"<. c #C69000\",
+\"[. c #D39E00\",
+\"}. c #BB1503\",
+\"|. c #F9EA7D\",
+\"1. c #F6E57A\",
+\"2. c #F5E370\",
+\"3. c #F5DE62\",
+\"4. c #F9DF52\",
+\"5. c #FBDB3E\",
+\"6. c #FCD526\",
+\"7. c #FCCE0F\",
+\"8. c #F7C50A\",
+\"9. c #EEBA08\",
+\"0. c #E2AB03\",
+\"a. c #D7A000\",
+\"b. c #D59D00\",
+\"c. c #DFA901\",
+\"d. c #E7B402\",
+\"e. c #C91800\",
+\"f. c #F6E676\",
+\"g. c #FCF4A1\",
+\"h. c #FDF096\",
+\"i. c #FAE167\",
+\"j. c #F7D64F\",
+\"k. c #F7CF38\",
+\"l. c #F7CB26\",
+\"m. c #F6BF0C\",
+\"n. c #F1B905\",
+\"o. c #ECB309\",
+\"p. c #EBB60A\",
+\"q. c #F0BF0B\",
+\"r. c #F3C206\",
+\"s. c #E5B201\",
+\"t. c #CF9C01\",
+\"u. c #C21602\",
+\"v. c #C21703\",
+\"w. c #F2E067\",
+\"x. c #FBF78F\",
+\"y. c #FEF28A\",
+\"z. c #FEED74\",
+\"A. c #FFE85F\",
+\"B. c #FFE24D\",
+\"C. c #FFDE3A\",
+\"D. c #FED92F\",
+\"E. c #FCD325\",
+\"F. c #F8CD1A\",
+\"G. c #EDBD0A\",
+\"H. c #D9A701\",
+\"I. c #C79200\",
+\"J. c #D11D00\",
+\"K. c #EFDA64\",
+\"L. c #F7EF7F\",
+\"M. c #FCF47F\",
+\"N. c #FDEE6C\",
+\"O. c #FDE85B\",
+\"P. c #FDE249\",
+\"Q. c #FDDC36\",
+\"R. c #FCD423\",
+\"S. c #F9CC14\",
+\"T. c #F0C10E\",
+\"U. c #E6B507\",
+\"V. c #DCA900\",
+\"W. c #D29F00\",
+\"X. c #C69400\",
+\"Y. c #C99200\",
+\"Z. c #CC1B02\",
+\"`. c #C61A04\",
+\" + c #E1CF5F\",
+\".+ c #EAD862\",
+\"++ c #ECDB63\",
+\"@+ c #EFDC5E\",
+\"#+ c #EFD955\",
+\"$+ c #EFD74D\",
+\"%+ c #EFD444\",
+\"&+ c #F0D23E\",
+\"*+ c #EECE37\",
+\"=+ c #E8C731\",
+\"-+ c #E0B922\",
+\";+ c #D09E03\",
+\">+ c #CB9700\",
+\",+ c #C39100\",
+\"'+ c #C99400\",
+\")+ c #E12400\",
+\"!+ c #F2E47C\",
+\"~+ c #F8ED8C\",
+\"{+ c #F4E171\",
+\"]+ c #F0D65B\",
+\"^+ c #F0D24F\",
+\"/+ c #F1CF43\",
+\"(+ c #F2CD34\",
+\"_+ c #F2C824\",
+\":+ c #EEC527\",
+\"<+ c #E7BD23\",
+\"[+ c #DFAC12\",
+\"}+ c #DAA203\",
+\"|+ c #E5B202\",
+\"1+ c #EDBA01\",
+\"2+ c #D69F00\",
+\"3+ c #D21E01\",
+\"4+ c #D01C00\",
+\"5+ c #F2E16A\",
+\"6+ c #FBF59D\",
+\"7+ c #FEFBAA\",
+\"8+ c #FEF084\",
+\"9+ c #FCE567\",
+\"0+ c #FBDD50\",
+\"a+ c #F8D23B\",
+\"b+ c #F8CD28\",
+\"c+ c #EEB51C\",
+\"d+ c #DA8A13\",
+\"e+ c #E29A16\",
+\"f+ c #EDB111\",
+\"g+ c #E5AE08\",
+\"h+ c #D19C01\",
+\"i+ c #C79400\",
+\"j+ c #BF1603\",
+\"k+ c #DD2300\",
+\"l+ c #E6D261\",
+\"m+ c #FCF88C\",
+\"n+ c #FFF27A\",
+\"o+ c #FFEC6A\",
+\"p+ c #FFE655\",
+\"q+ c #FFE041\",
+\"r+ c #FFDA2B\",
+\"s+ c #E49D14\",
+\"t+ c #BA4F02\",
+\"u+ c #BB6A00\",
+\"v+ c #B37102\",
+\"w+ c #DD2200\",
+\"x+ c #CA1B02\",
+\"y+ c #E6DB78\",
+\"z+ c #FEFB8B\",
+\"A+ c #FFF470\",
+\"B+ c #FFEA56\",
+\"C+ c #FFE13E\",
+\"D+ c #FFDA24\",
+\"E+ c #FECF0A\",
+\"F+ c #F5BE01\",
+\"G+ c #D37800\",
+\"H+ c #D72000\",
+\"I+ c #C61802\",
+\"J+ c #EBD55C\",
+\"K+ c #FCE353\",
+\"L+ c #FFE33E\",
+\"M+ c #FFDB26\",
+\"N+ c #FFD20B\",
+\"O+ c #FCCB01\",
+\"P+ c #F0B900\",
+\"Q+ c #D47D00\",
+\"R+ c #E42500\",
+\"S+ c #EB2900\",
+\"T+ c #DF2301\",
+\"U+ c #E82700\",
+\"V+ c #D31F04\",
+\"W+ c #C71F01\",
+\"X+ c #EA2800\",
+\"Y+ c #E92800\",
+\"Z+ c #DD2301\",
+\"`+ c #E22501\",
+\" . . . . . . . \",
+\" . . . + @ # $ % & * . . . \",
+\" . = - ; > , ' ) ! ~ { ] ^ / . \",
+\". ( _ : < [ } | 1 2 3 4 5 6 7 8 . \",
+\". 9 0 a b c d e f g h i j k l m . \",
+\". n o p q r s t u v w x y z A B . \",
+\". C D E F G s t u v w x y z H I . \",
+\". J K L M N O P Q R S T U V W X . \",
+\". Y Z ` ...+.@.#.$.%.&.*.=.-.;.. . . \",
+\". >.,.'.).!.~.{.].^./.(._.:.<.[.. . }.. \",
+\". |.1.2.3.4.5.6.7.8.9.0.a.b.c.d.. . e.. \",
+\". f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.. . u.v.. \",
+\". w.x.n y.z.A.B.C.D.E.F.G.H.-.I.. . J.. \",
+\". K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.. . Z.`.. \",
+\". +.+++@+#+$+%+&+*+=+-+;+>+,+'+. . )+. \",
+\". !+~+{+]+^+/+(+_+:+<+[+}+|+1+2+. . 3+4+. \",
+\". 5+6+7+8+9+0+a+b+c+d+e+f+g+h+i+. j+k+. \",
+\". l+m+q n+o+p+q+r+s+. . . t+u+v+. w+x+. \",
+\" . y+z+A+B+C+D+E+F+G+. H+. . . I+)+. \",
+\" . . J+K+L+M+N+O+P+Q+. R+S+T+U+V+. \",
+\" . . . . . . . . . . W+X+Y+. \",
+\" . Z+`+. \",
+\" . . \",
+\" . \"};
+"
+ "XPM format image used as Commit icon")
+
+(defconst plsql-prev-mark-xpm "\
+/* XPM */
+static char * go_previous_xpm[] = {
+\"24 24 59 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #355D96\",
+\"@ c #3C639B\",
+\"# c #6E92BF\",
+\"$ c #41679D\",
+\"% c #6990BE\",
+\"& c #6D94C2\",
+\"* c #456DA2\",
+\"= c #628BBC\",
+\"- c #4D7BB4\",
+\"; c #6991C0\",
+\"> c #4971A6\",
+\", c #5D87BA\",
+\"' c #4B7BB3\",
+\") c #4979B3\",
+\"! c #5884B9\",
+\"~ c #638CBC\",
+\"{ c #638BBC\",
+\"] c #6089BA\",
+\"^ c #4B73A9\",
+\"/ c #5883B8\",
+\"( c #4A7AB3\",
+\"_ c #618ABB\",
+\": c #4C74AB\",
+\"< c #547FB5\",
+\"[ c #4972A9\",
+\"} c #4D79B1\",
+\"| c #4171AD\",
+\"1 c #4071AD\",
+\"2 c #4070AD\",
+\"3 c #4171AC\",
+\"4 c #4071AC\",
+\"5 c #4070AC\",
+\"6 c #3F70AC\",
+\"7 c #3F70AB\",
+\"8 c #406FAC\",
+\"9 c #5781B5\",
+\"0 c #4A74AC\",
+\"a c #3E6CA8\",
+\"b c #3465A4\",
+\"c c #4E78AF\",
+\"d c #446FA8\",
+\"e c #4A75AD\",
+\"f c #3F6CA6\",
+\"g c #3C6BA7\",
+\"h c #3B6BA7\",
+\"i c #4471AB\",
+\"j c #4572AB\",
+\"k c #4672AC\",
+\"l c #4571AB\",
+\"m c #3A68A3\",
+\"n c #3B6AA7\",
+\"o c #406EA9\",
+\"p c #3564A0\",
+\"q c #3868A6\",
+\"r c #305E9D\",
+\"s c #3767A5\",
+\"t c #2E5D9B\",
+\" \",
+\" \",
+\" \",
+\" .. \",
+\" .+. \",
+\" .@#. \",
+\" .$%&. \",
+\" .*=-;......... \",
+\" .>,')!~{{{{{~]. \",
+\" .^/()))(((((('_. \",
+\" .:<)))))))))))),. \",
+\" .[}|1123455567589. \",
+\" .0abbbbbbbbbbbbc. \",
+\" .dabbbbbbbbbbbe. \",
+\" .fgbbhijjjjjkl. \",
+\" .mnbo......... \",
+\" .pqh. \",
+\" .rs. \",
+\" .t. \",
+\" .. \",
+\" . \",
+\" \",
+\" \",
+\" \"};
+"
+ "XPM format image used as Previous Mark icon")
+
+(defconst plsql-next-mark-xpm "\
+/* XPM */
+static char * go_next_xpm[] = {
+\"24 24 63 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #365F97\",
+\"@ c #6B8FBE\",
+\"# c #41689E\",
+\"$ c #6990BF\",
+\"% c #466EA4\",
+\"& c #678EBD\",
+\"* c #4E7DB5\",
+\"= c #638CBC\",
+\"- c #4B72A7\",
+\"; c #5B83B5\",
+\"> c #628BBB\",
+\", c #5A86BA\",
+\"' c #4979B3\",
+\") c #4B7AB3\",
+\"! c #5E87B9\",
+\"~ c #4E76AA\",
+\"{ c #5B84B8\",
+\"] c #4E7CB5\",
+\"^ c #4A7AB3\",
+\"/ c #5883B7\",
+\"( c #5178AD\",
+\"_ c #5982B6\",
+\": c #4C7BB4\",
+\"< c #537FB5\",
+\"[ c #5079AE\",
+\"} c #507BB0\",
+\"| c #4272AD\",
+\"1 c #4070AC\",
+\"2 c #3F70AB\",
+\"3 c #3F70AC\",
+\"4 c #4071AC\",
+\"5 c #4171AC\",
+\"6 c #4070AD\",
+\"7 c #4071AD\",
+\"8 c #4171AD\",
+\"9 c #4D79B1\",
+\"0 c #4E76AD\",
+\"a c #4872AA\",
+\"b c #3767A5\",
+\"c c #3465A4\",
+\"d c #3D6CA8\",
+\"e c #4C76AD\",
+\"f c #2B548E\",
+\"g c #446FA8\",
+\"h c #3C6BA7\",
+\"i c #4772AA\",
+\"j c #29528E\",
+\"k c #3F6CA6\",
+\"l c #4471AB\",
+\"m c #4371AB\",
+\"n c #3B6BA7\",
+\"o c #416EA8\",
+\"p c #3F6CA7\",
+\"q c #3A69A6\",
+\"r c #3C6AA5\",
+\"s c #3B6AA5\",
+\"t c #3868A6\",
+\"u c #3765A2\",
+\"v c #3666A3\",
+\"w c #32619F\",
+\"x c #2F5D9B\",
+\" \",
+\" \",
+\" \",
+\" .. \",
+\" .+. \",
+\" .@#. \",
+\" .$$%. \",
+\" .........&*=-. \",
+\" .;>>>>>>=,')!~. \",
+\" .{]^^^^^^''''/(. \",
+\" ._:'''''''''''<[. \",
+\" .}|12311145677890. \",
+\" .abcccccccccccde. \",
+\" .gbcccccccccchi. \",
+\" .klmlllllhccno. \",
+\" .........pcqr. \",
+\" .stu. \",
+\" .vw. \",
+\" .x. \",
+\" .. \",
+\" . \",
+\" \",
+\" \",
+\" \"};
+"
+ "XPM format image used as Next Mark icon")
+
+(defconst sqlplus-kill-image
+ (create-image sqlplus-kill-xpm 'xpm t))
+
+(defconst sqlplus-cancel-image
+ (create-image sqlplus-cancel-xpm 'xpm t))
+
+(defconst sqlplus-commit-image
+ (create-image sqlplus-commit-xpm 'xpm t))
+
+(defconst sqlplus-rollback-image
+ (create-image sqlplus-rollback-xpm 'xpm t))
+
+(defconst plsql-prev-mark-image
+ (create-image plsql-prev-mark-xpm 'xpm t))
+
+(defconst plsql-next-mark-image
+ (create-image plsql-next-mark-xpm 'xpm t))
+
+(defvar sqlplus-mode-syntax-table nil
+ "Syntax table used while in sqlplus-mode.")
+
+(defvar sqlplus-suppress-show-output-buffer nil)
+
+;; Local in input buffers
+(defvar sqlplus-font-lock-keywords-1 nil)
+(make-variable-buffer-local 'sqlplus-font-lock-keywords-1)
+(defvar sqlplus-font-lock-keywords-2 nil)
+(make-variable-buffer-local 'sqlplus-font-lock-keywords-2)
+(defvar sqlplus-font-lock-keywords-3 nil)
+(make-variable-buffer-local 'sqlplus-font-lock-keywords-3)
+
+(defvar sqlplus-font-lock-defaults '((sqlplus-font-lock-keywords-1 sqlplus-font-lock-keywords-2 sqlplus-font-lock-keywords-3) nil t nil nil))
+
+(defvar sqlplus-oracle-extra-builtin-functions-re
+ (concat "\\b"
+ (regexp-opt '("acos" "asciistr" "asin" "atan" "atan2" "bfilename" "bin_to_num" "bitand" "cardinality" "cast" "coalesce" "collect"
+ "compose" "corr" "corr_s" "corr_k" "covar_pop" "covar_samp" "cume_dist" "current_date" "current_timestamp" "cv"
+ "dbtimezone" "decompose" "dense_rank" "depth" "deref" "empty_blob, empty_clob" "existsnode" "extract"
+ "extractvalue" "first" "first_value" "from_tz" "group_id" "grouping" "grouping_id" "iteration_number"
+ "lag" "last" "last_value" "lead" "lnnvl" "localtimestamp" "make_ref" "median" "nanvl" "nchr" "nls_charset_decl_len"
+ "nls_charset_id" "nls_charset_name" "ntile" "nullif" "numtodsinterval" "numtoyminterval" "nvl2" "ora_hash" "path"
+ "percent_rank" "percentile_cont" "percentile_disc" "powermultiset" "powermultiset_by_cardinality" "presentnnv"
+ "presentv" "previous" "rank" "ratio_to_report" "rawtonhex" "ref" "reftohex" "regexp_instr" "regexp_replace"
+ "regexp_substr" "regr_slope" "regr_intercept" "regr_count" "regr_r2" "regr_avgx" "regr_avgy" "regr_sxx" "regr_syy"
+ "regr_sxy" "remainder" "row_number" "rowidtonchar" "scn_to_timestamp" "sessiontimezone" "stats_binomial_test"
+ "stats_crosstab" "stats_f_test" "stats_ks_test" "stats_mode" "stats_mw_test" "stats_one_way_anova" "stats_t_test_one"
+ "stats_t_test_paired" "stats_t_test_indep" "stats_t_test_indepu" "stats_wsr_test" "stddev_pop" "stddev_samp"
+ "sys_connect_by_path" "sys_context" "sys_dburigen" "sys_extract_utc" "sys_guid" "sys_typeid" "sys_xmlagg" "sys_xmlgen"
+ "systimestamp" "timestamp_to_scn" "to_binary_double" "to_binary_float" "to_clob" "to_dsinterval" "to_lob" "to_nchar"
+ "to_nclob" "to_timestamp" "to_timestamp_tz" "to_yminterval" "treat" "tz_offset" "unistr" "updatexml" "value" "var_pop"
+ "var_samp" "width_bucket" "xmlagg" "xmlcolattval" "xmlconcat" "xmlelement" "xmlforest" "xmlsequence" "xmltransform") t)
+ "\\b"))
+(defvar sqlplus-oracle-extra-warning-words-re
+ (concat "\\b"
+ (regexp-opt '("access_into_null" "case_not_found" "collection_is_null" "rowtype_mismatch"
+ "self_is_null" "subscript_beyond_count" "subscript_outside_limit" "sys_invalid_rowid") t)
+ "\\b"))
+(defvar sqlplus-oracle-extra-keywords-re
+ (concat "\\b\\("
+ "\\(at\\s-+local\\|at\\s-+time\\s-+zone\\|to\\s-+second\\|to\\s-+month\\|is\\s-+present\\|a\\s-+set\\)\\|"
+ (regexp-opt '("case" "nan" "infinite" "equals_path" "empty" "likec" "like2" "like4" "member"
+ "regexp_like" "submultiset" "under_path" "mlslabel") t)
+ "\\)\\b"))
+(defvar sqlplus-oracle-extra-pseudocolumns-re
+ (concat "\\b"
+ (regexp-opt '("connect_by_iscycle" "connect_by_isleaf" "versions_starttime" "versions_startscn"
+ "versions_endtime" "versions_endscn" "versions_xid" "versions_operation" "object_id" "object_value" "ora_rowscn"
+ "xmldata") t)
+ "\\b"))
+(defvar sqlplus-oracle-plsql-extra-reserved-words-re
+ (concat "\\b"
+ (regexp-opt '("array" "at" "authid" "bulk" "char_base" "day" "do" "extends" "forall" "heap" "hour"
+ "interface" "isolation" "java" "limited" "minute" "mlslabel" "month" "natural" "naturaln" "nocopy" "number_base"
+ "ocirowid" "opaque" "operator" "organization" "pls_integer" "positive" "positiven" "range" "record" "release" "reverse"
+ "rowtype" "second" "separate" "space" "sql" "timezone_region" "timezone_abbr" "timezone_minute" "timezone_hour" "year"
+ "zone") t)
+ "\\b"))
+(defvar sqlplus-oracle-extra-types-re
+ (concat "\\b"
+ (regexp-opt '("nvarchar2" "binary_float" "binary_double" "timestamp" "interval" "interval_day" "urowid" "nchar" "clob" "nclob" "bfile") t)
+ "\\b"))
+
+(defvar sqlplus-commands-regexp-1 nil)
+(defvar sqlplus-commands-regexp-23 nil)
+(defvar sqlplus-system-variables-regexp-1 nil)
+(defvar sqlplus-system-variables-regexp-23 nil)
+(defvar sqlplus-v22-commands-font-lock-keywords-1 nil)
+(defvar sqlplus-v22-commands-font-lock-keywords-23 nil)
+(defvar font-lock-sqlplus-face nil)
+
+(defvar sqlplus-output-buffer-keymap nil
+ "Local in output buffer.")
+(make-variable-buffer-local 'sqlplus-output-buffer-keymap)
+
+(defvar sqlplus-kill-function-inhibitor nil)
+
+(defvar sqlplus-slip-separator-width 2
+ "Only for classic table style.")
+
+(defvar sqlplus-user-string-history nil)
+
+(defvar sqlplus-object-types '( "CONSUMER GROUP" "SEQUENCE" "SCHEDULE" "PROCEDURE" "OPERATOR" "WINDOW"
+ "PACKAGE" "LIBRARY" "PROGRAM" "PACKAGE BODY" "JAVA RESOURCE" "XML SCHEMA"
+ "JOB CLASS" "TRIGGER" "TABLE" "SYNONYM" "VIEW" "FUNCTION" "WINDOW GROUP"
+ "JAVA CLASS" "INDEXTYPE" "INDEX" "TYPE" "EVALUATION CONTEXT" ))
+
+(defvar sqlplus-end-of-source-sentinel "%%@@end-of-source-sentinel@@%%")
+
+(defconst sqlplus-system-variables
+ '("appi[nfo]" "array[size]" "auto[commit]" "autop[rint]" "autorecovery" "autot[race]" "blo[ckterminator]" "cmds[ep]"
+ "colsep" "com[patibility]" "con[cat]" "copyc[ommit]" "copytypecheck" "def[ine]" "describe" "echo" "editf[ile]"
+ "emb[edded]" "esc[ape]" "feed[back]" "flagger" "flu[sh]" "hea[ding]" "heads[ep]" "instance" "lin[esize]"
+ "lobof[fset]" "logsource" "long" "longc[hunksize]" "mark[up]" "newp[age]" "null" "numf[ormat]" "num[width]"
+ "pages[ize]" "pau[se]" "recsep" "recsepchar" "serverout[put]" "shift[inout]" "show[mode]" "sqlbl[anklines]"
+ "sqlc[ase]" "sqlco[ntinue]" "sqln[umber]" "sqlpluscompat[ibility]" "sqlpre[fix]" "sqlp[rompt]" "sqlt[erminator]"
+ "suf[fix]" "tab" "term[out]" "ti[me]" "timi[ng]" "trim[out]" "trims[pool]" "und[erline]" "ver[ify]" "wra[p]"))
+
+(defconst sqlplus-commands
+ '(("@[@]")
+ (("/" "r[un]"))
+ ("acc[ept]"
+ (font-lock-type-face "num[ber]" "char" "date" "binary_float" "binary_double")
+ (font-lock-keyword-face "for[mat]" "def[ault]" "[no]prompt" "hide"))
+ ("a[ppend]")
+ ("archive log"
+ (font-lock-keyword-face "list" "stop" "start" "next" "all" "to"))
+ ("attribute"
+ (font-lock-keyword-face "ali[as]" "cle[ar]" "for[mat]" "like" "on" "off"))
+ ("bre[ak]"
+ (font-lock-keyword-face "on" "row" "report" "ski[p]" "page" "nodup[licates]" "dup[licates]"))
+ ("bti[tle]"
+ (font-lock-keyword-face "on" "off")
+ (font-lock-builtin-face "bold" "ce[nter]" "col" "format" "le[ft]" "r[ight]" "s[kip]" "tab"))
+ ("c[hange]")
+ ("cl[ear]"
+ (font-lock-keyword-face "bre[aks]" "buff[er]" "col[umns]" "comp[utes]" "scr[een]" "sql" "timi[ng]"))
+ ("col[umn]"
+ (font-lock-keyword-face "ali[as]" "cle[ar]" "entmap" "on" "off" "fold_a[fter]" "fold_b[efore]" "for[mat]" "hea[ding]"
+ "jus[tify]" "l[eft]" "c[enter]" "r[ight]" "like" "newl[ine]" "new_v[alue]" "nopri[nt]" "pri[nt]"
+ "nul[l]" "old_v[alue]" "wra[pped]" "wor[d_wrapped]" "tru[ncated]"))
+ ("comp[ute]"
+ (font-lock-keyword-face "lab[el]" "of" "on" "report" "row")
+ (font-lock-builtin-face "avg" "cou[nt]" "min[imum]" "max[imum]" "num[ber]" "sum" "std" "var[iance]"))
+ ("conn[ect]"
+ (font-lock-keyword-face "as" "sysoper" "sysdba"))
+ ("copy")
+ ("def[ine]")
+ ("del"
+ (font-lock-keyword-face "last"))
+ ("desc[ribe]")
+ ("disc[onnect]")
+ ("ed[it]")
+ ("exec[ute]")
+ (("exit" "quit")
+ (font-lock-keyword-face "success" "failure" "warning" "commit" "rollback"))
+ ("get"
+ (font-lock-keyword-face "file" "lis[t]" "nol[ist]"))
+ ("help")
+ (("ho[st]" "!" "$"))
+ ("i[nput]")
+ ("l[ist]"
+ (font-lock-keyword-face "last"))
+ ("passw[ord]")
+ ("pau[se]")
+ ("pri[nt]")
+ ("pro[mpt]")
+ ("recover"
+ (font-lock-keyword-face "begin" "end" "backup" "automatic" "from" "logfile" "test" "allow" "corruption" "continue" "default" "cancel"
+ "standby" "database" "until" "time" "change" "using" "controlfile" "tablespace" "datafile"
+ "consistent" "with" "[no]parallel" "managed" "disconnect" "session" "[no]timeout" "[no]delay" "next" "no" "expire"
+ "current" "through" "thread" "sequence" "all" "archivelog" "last" "switchover" "immediate" "[no]wait"
+ "finish" "skip"))
+ ("rem[ark]")
+ ("repf[ooter]"
+ (font-lock-keyword-face "page" "on" "off")
+ (font-lock-builtin-face "bold" "ce[nter]" "col" "format" "le[ft]" "r[ight]" "s[kip]" "tab"))
+ ("reph[eader]"
+ (font-lock-keyword-face "page" "on" "off")
+ (font-lock-builtin-face "bold" "ce[nter]" "col" "format" "le[ft]" "r[ight]" "s[kip]" "tab"))
+ ("sav[e]"
+ (font-lock-keyword-face "file" "cre[ate]" "rep[lace]" "app[end]"))
+ ("set"
+ (font-lock-builtin-face sqlplus-system-variables)
+ (font-lock-keyword-face "on" "off" "immediate" "trace[only]" "explain" "statistics" "native" "v7" "v8" "all" "linenum" "indent"
+ "entry" "intermediate" "full" "local" "head" "html" "body" "table" "entmap" "spool" "[pre]format"
+ "none" "[word_]wrapped" "each" "truncated" "[in]visible" "mixed" "lower" "upper"))
+ ("sho[w]"
+ (font-lock-keyword-face "all" "bti[tle]" "err[ors]" "function" "procedure" "package[ body]" "trigger" "view" "type[ body]"
+ "dimension" "java class" "lno" "parameters" "pno" "recyc[lebin]" "rel[ease]" "repf[ooter]" "reph[eader]"
+ "sga" "spoo[l]" "sqlcode" "tti[tle]" "user")
+ (font-lock-builtin-face sqlplus-system-variables))
+ ("shutdown"
+ (font-lock-keyword-face "abort" "immediate" "normal" "transactional" "local"))
+ ("spo[ol]"
+ ("cre" "create" "rep" "replace" "app" "append" "off" "out"))
+ ("sta[rt]")
+ ("startup"
+ (font-lock-keyword-face "force" "restrict" "pfile" "quiet" "mount" "open" "nomount" "read" "only" "write" "recover"))
+ ("store"
+ (font-lock-keyword-face "set" "cre[ate]" "rep[lace]" "app[end]"))
+ ("timi[ng]"
+ (font-lock-keyword-face "start" "show" "stop"))
+ ("tti[tle]"
+ (font-lock-keyword-face "tti[tle]" "on" "off")
+ (font-lock-builtin-face "bold" "ce[nter]" "col" "format" "le[ft]" "r[ight]" "s[kip]" "tab"))
+ ("undef[ine]")
+ ("var[iable]"
+ (font-lock-type-face "number" "[n]char" "byte" "[n]varchar2" "[n]clob" "refcursor" "binary_float" "binary_double"))
+ ("whenever oserror"
+ (font-lock-keyword-face "exit" "success" "failure" "commit" "rollback" "continue" "commit" "rollback" "none"))
+ ("whenever sqlerror"
+ (font-lock-keyword-face "exit" "success" "failure" "warning" "commit" "rollback" "continue" "none"))))
+
+(defvar plsql-mode-map nil)
+
+(defstruct sqlplus-global-struct
+ font-lock-regexps
+ objects-alist
+ side-view-buffer
+ root-dir
+)
+
+(defvar sqlplus-global-structures (make-hash-table :test 'equal)
+ "Connect string -> sqlplus-global-struct")
+
+(defun sqlplus-get-objects-alist (&optional connect-string)
+ (let ((struct (gethash (car (refine-connect-string (or connect-string sqlplus-connect-string sqlplus-process-p)))
+ sqlplus-global-structures)))
+ (when struct
+ (sqlplus-global-struct-objects-alist struct))))
+
+(defun sqlplus-set-objects-alist (objects-alist &optional connect-string)
+ (let ((struct (gethash (car (refine-connect-string (or connect-string sqlplus-connect-string sqlplus-process-p)))
+ sqlplus-global-structures)))
+ (when struct
+ (setf (sqlplus-global-struct-objects-alist struct) objects-alist))))
+
+(defun sqlplus-get-font-lock-regexps (&optional connect-string)
+ (let ((struct (gethash (car (refine-connect-string (or connect-string sqlplus-connect-string sqlplus-process-p)))
+ sqlplus-global-structures)))
+ (when struct
+ (sqlplus-global-struct-font-lock-regexps struct))))
+
+(defun sqlplus-set-font-lock-regexps (font-lock-regexps &optional connect-string)
+ (let ((struct (gethash (car (refine-connect-string (or connect-string sqlplus-connect-string sqlplus-process-p)))
+ sqlplus-global-structures)))
+ (when struct
+ (setf (sqlplus-global-struct-font-lock-regexps struct) font-lock-regexps))))
+
+(defun sqlplus-get-side-view-buffer (&optional connect-string)
+ (let ((struct (gethash (car (refine-connect-string (or connect-string sqlplus-connect-string sqlplus-process-p)))
+ sqlplus-global-structures)))
+ (when struct
+ (sqlplus-global-struct-side-view-buffer struct))))
+
+(defun sqlplus-get-root-dir (&optional connect-string)
+ (let ((struct (gethash (car (refine-connect-string (or connect-string sqlplus-connect-string sqlplus-process-p)))
+ sqlplus-global-structures)))
+ (when struct
+ (sqlplus-global-struct-root-dir struct))))
+
+(defun sqlplus-set-root-dir (root-dir &optional connect-string)
+ (let ((struct (gethash (car (refine-connect-string (or connect-string sqlplus-connect-string sqlplus-process-p)))
+ sqlplus-global-structures)))
+ (when struct
+ (setf (sqlplus-global-struct-root-dir struct) root-dir))))
+
+;;; ---
+
+(defun sqlplus-initial-strings ()
+ (append sqlplus-initial-strings
+ (list
+ (concat "btitle left '" sqlplus-page-separator "'")
+ (concat "repfooter left '" sqlplus-repfooter "'")
+ (concat "set pagesize " (number-to-string sqlplus-pagesize)))))
+
+(defun sqlplus-connect-string-lessp (cs1 cs2)
+ "Compare two connect strings"
+ (let ((cs1-pair (split-string cs1 "@"))
+ (cs2-pair (split-string cs2 "@")))
+ (or (string< (cadr cs1-pair) (cadr cs2-pair))
+ (and (string= (cadr cs1-pair) (cadr cs2-pair))
+ (string< (car cs1-pair) (car cs2-pair))))))
+
+(defun sqlplus-divide-connect-strings ()
+ "Returns (active-connect-string-list . inactive-connect-string-list)"
+ (let* ((active-connect-strings
+ (sort (delq nil (mapcar (lambda (buffer)
+ (with-current-buffer buffer
+ (when (and (eq major-mode 'sqlplus-mode)
+ sqlplus-connect-string)
+ (let ((cs (car (refine-connect-string sqlplus-connect-string))))
+ (when (and (get-buffer (sqlplus-get-process-buffer-name cs))
+ (get-process (sqlplus-get-process-name cs)))
+ (downcase cs))))))
+ (buffer-list)))
+ 'sqlplus-connect-string-lessp))
+ (inactive-connect-strings
+ (sort (delq nil (mapcar (lambda (pair)
+ (unless (member (downcase (car pair)) active-connect-strings) (downcase (car pair))) )
+ sqlplus-connect-strings-alist))
+ 'sqlplus-connect-string-lessp)))
+ (setq active-connect-strings (remove-duplicates active-connect-strings :test 'equal))
+ (setq inactive-connect-strings (remove-duplicates inactive-connect-strings :test 'equal))
+ (cons active-connect-strings inactive-connect-strings)))
+
+(defun sqlplus-connections-menu (menu)
+ (condition-case err
+ (let* ((connect-strings-pair (sqlplus-divide-connect-strings))
+ (active-connect-strings (car connect-strings-pair))
+ (inactive-connect-strings (cdr connect-strings-pair)))
+ (append
+ (list ["New connection..." sqlplus t])
+ (list ["Tnsnames.ora" sqlplus-find-tnsnames t])
+ (list ["Command Line" sqlplus-command-line t])
+ (when (eq major-mode 'sqlplus-mode)
+ (list
+ "----"
+ ["Evaluate Statement" sqlplus-send-current sqlplus-connect-string]
+ ["Explain Statement" sqlplus-explain sqlplus-connect-string]
+ ["Evaluate Statement (HTML)" sqlplus-send-current-html sqlplus-connect-string]
+ ["Evaluate Region" sqlplus-send-region (and (mark) sqlplus-connect-string)]))
+ (when orcl-mode
+ (list
+ "----"
+ ["Send Commit" sqlplus-send-commit sqlplus-connect-string]
+ ["Send Rollback" sqlplus-send-rollback sqlplus-connect-string]
+ ["Restart Connection" sqlplus-restart-connection sqlplus-connect-string]
+ ["Show History" sqlplus-show-history sqlplus-connect-string]
+ ["Get Source from DB" sqlplus-get-source sqlplus-connect-string]
+ ["Interrupt Evaluation" sqlplus-send-interrupt sqlplus-connect-string]
+ ["Compare schema to filesystem" sqlplus-compare-schema-to-filesystem sqlplus-connect-string]
+ "----"
+ (list "Output"
+ ["Show window" sqlplus-buffer-display-window t]
+ "----"
+ ["Redisplay" sqlplus-buffer-redisplay-current t]
+ ["Previous" sqlplus-buffer-prev-command t]
+ ["Next" sqlplus-buffer-next-command t]
+ "----"
+ ["Scroll Right" sqlplus-buffer-scroll-right t]
+ ["Scroll Left" sqlplus-buffer-scroll-left t]
+ ["Scroll Down" sqlplus-buffer-scroll-down t]
+ ["Scroll Up" sqlplus-buffer-scroll-up t]
+ "----"
+ ["Bottom" sqlplus-buffer-bottom t]
+ ["Top" sqlplus-buffer-top t]
+ "----"
+ ["Erase" sqlplus-buffer-erase t])
+ ))
+ (when inactive-connect-strings
+ (append
+ (list "----")
+ (list (append (list "Recent Connections")
+ (mapcar (lambda (connect-string)
+ (vector connect-string (list 'apply ''sqlplus
+ (list 'sqlplus-read-connect-string connect-string)) t)) inactive-connect-strings)))))
+ (when active-connect-strings
+ (append
+ (list "----")
+ (mapcar (lambda (connect-string)
+ (vector connect-string (list 'apply ''sqlplus
+ (list 'sqlplus-read-connect-string connect-string)) t)) active-connect-strings)))
+ ))
+ (error (message (error-message-string err)))))
+
+(defun sqlplus-send-commit ()
+ "Send 'commit' command to SQL*Process."
+ (interactive)
+ (sqlplus-check-connection)
+ (sqlplus-execute sqlplus-connect-string "commit;" nil nil))
+
+(defun sqlplus-send-rollback ()
+ "Send 'rollback' command to SQL*Process."
+ (interactive)
+ (sqlplus-check-connection)
+ (sqlplus-execute sqlplus-connect-string "rollback;" nil nil))
+
+(defun sqlplus-show-history ()
+ "Show command history for current connection."
+ (interactive)
+ (sqlplus-check-connection)
+ (sqlplus-verify-buffer sqlplus-connect-string)
+ (switch-to-buffer (sqlplus-get-history-buffer sqlplus-connect-string)))
+
+(defun sqlplus-restart-connection ()
+ "Kill SQL*Plus process and start again."
+ (interactive)
+ (sqlplus-check-connection)
+ (sqlplus-verify-buffer sqlplus-connect-string)
+ (let ((connect-stringos sqlplus-connect-string))
+ (unwind-protect
+ (progn
+ (setq sqlplus-kill-function-inhibitor t)
+ (sqlplus-shutdown connect-stringos t))
+ (setq sqlplus-kill-function-inhibitor nil))
+ (sqlplus connect-stringos (sqlplus-get-input-buffer-name connect-stringos))))
+
+(define-skeleton plsql-begin
+ "begin..end skeleton"
+ "" ; interactor
+ "begin" ?\n
+ > _ ?\n
+ "end;" >)
+
+(define-skeleton plsql-loop
+ "loop..end loop skeleton"
+ "" ; interactor
+ "loop" ?\n
+ > _ ?\n
+ "end loop;" >)
+
+(define-skeleton plsql-if
+ "if..end if skeleton"
+ "" ; interactor
+ "if " _ " then" ?\n
+ > ?\n
+ "end if;" >)
+
+;;; SQLPLUS-mode Keymap -
+
+(unless orcl-mode-map
+ (setq orcl-mode-map (make-sparse-keymap))
+ (define-key orcl-mode-map "\C-c\C-o" 'sqlplus-buffer-display-window)
+ (define-key orcl-mode-map "\C-c\C-l" 'sqlplus-buffer-redisplay-current)
+ (define-key orcl-mode-map "\C-c\C-p" 'sqlplus-buffer-prev-command)
+ (define-key orcl-mode-map [C-S-up] 'sqlplus-buffer-prev-command)
+ (define-key orcl-mode-map "\C-c\C-n" 'sqlplus-buffer-next-command)
+ (define-key orcl-mode-map [C-S-down] 'sqlplus-buffer-next-command)
+ (define-key orcl-mode-map "\C-c\C-b" 'sqlplus-buffer-scroll-right)
+ (define-key orcl-mode-map [C-S-left] 'sqlplus-buffer-scroll-right)
+ (define-key orcl-mode-map "\C-c\C-f" 'sqlplus-buffer-scroll-left)
+ (define-key orcl-mode-map [C-S-right] 'sqlplus-buffer-scroll-left)
+ (define-key orcl-mode-map "\C-c\M-v" 'sqlplus-buffer-scroll-down)
+ (define-key orcl-mode-map "\C-c\C-v" 'sqlplus-buffer-scroll-up)
+ (define-key orcl-mode-map "\C-c>" 'sqlplus-buffer-bottom)
+ (define-key orcl-mode-map "\C-c<" 'sqlplus-buffer-top)
+ (define-key orcl-mode-map "\C-c\C-w" 'sqlplus-buffer-erase)
+ (define-key orcl-mode-map "\C-c\C-m" 'sqlplus-send-commit)
+ (define-key orcl-mode-map "\C-c\C-a" 'sqlplus-send-rollback)
+ (define-key orcl-mode-map "\C-c\C-k" 'sqlplus-restart-connection)
+ (define-key orcl-mode-map "\C-c\C-t" 'sqlplus-show-history)
+ (define-key orcl-mode-map "\C-c\C-s" 'sqlplus-get-source)
+ (define-key orcl-mode-map "\C-c\C-i" 'sqlplus-send-interrupt)
+ (define-key orcl-mode-map [S-return] 'sqlplus-send-user-string)
+ (define-key orcl-mode-map [tool-bar sqlplus-restart-connection]
+ (list 'menu-item "Restart connection" 'sqlplus-restart-connection :image sqlplus-kill-image))
+ (define-key orcl-mode-map [tool-bar sqlplus-cancel]
+ (list 'menu-item "Cancel" 'sqlplus-send-interrupt :image sqlplus-cancel-image))
+ (define-key orcl-mode-map [tool-bar sqlplus-rollback]
+ (list 'menu-item "Rollback" 'sqlplus-send-rollback :image sqlplus-rollback-image))
+ (define-key orcl-mode-map [tool-bar sqlplus-commit]
+ (list 'menu-item "Commit" 'sqlplus-send-commit :image sqlplus-commit-image)))
+
+(unless sqlplus-mode-map
+ (setq sqlplus-mode-map (make-sparse-keymap))
+ (define-key sqlplus-mode-map "\C-c\C-g" 'plsql-begin)
+ (define-key sqlplus-mode-map "\C-c\C-q" 'plsql-loop)
+ (define-key sqlplus-mode-map "\C-c\C-z" 'plsql-if)
+ (define-key sqlplus-mode-map "\C-c\C-r" 'sqlplus-send-region)
+ (define-key sqlplus-mode-map [C-return] 'sqlplus-send-current)
+ (define-key sqlplus-mode-map [M-return] 'sqlplus-explain)
+ (define-key sqlplus-mode-map "\C-c\C-e" 'sqlplus-send-current)
+ (define-key sqlplus-mode-map "\C-c\C-j" 'sqlplus-send-current-html)
+ (define-key sqlplus-mode-map [C-S-return] 'sqlplus-send-current-html)
+ (define-key sqlplus-mode-map "\M-." 'sqlplus-file-get-source)
+ (define-key sqlplus-mode-map [C-down-mouse-1] 'sqlplus-mouse-select-identifier)
+ (define-key sqlplus-mode-map [C-mouse-1] 'sqlplus-file-get-source-mouse)
+ )
+
+(easy-menu-add-item nil nil sqlplus-connections-menu t)
+
+(unless sqlplus-mode-syntax-table
+ (setq sqlplus-mode-syntax-table (make-syntax-table))
+ (modify-syntax-entry ?/ ". 14" sqlplus-mode-syntax-table) ; comment start
+ (modify-syntax-entry ?* ". 23" sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?+ "." sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?. "." sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?\" "." sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?\\ "." sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?- ". 12b" sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?\n "> b" sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?= "." sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?% "w" sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?< "." sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?> "." sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?& "w" sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?| "." sqlplus-mode-syntax-table)
+ (modify-syntax-entry ?_ "w" sqlplus-mode-syntax-table) ; _ is word char
+ (modify-syntax-entry ?\' "\"" sqlplus-mode-syntax-table))
+
+;;; SQL*Plus mode
+
+(defun connect-string-to-string ()
+ (let ((txt (or (car (refine-connect-string sqlplus-connect-string)) "disconnected"))
+ (result))
+ (if (string-match "^\\(.*?\\)\\(\\w*prod\\w*\\)$" txt)
+ (if (>= emacs-major-version 22)
+ (setq result (list (list :propertize (substring txt 0 (match-beginning 2)) 'face '((:foreground "blue")))
+ (list :propertize (substring txt (match-beginning 2)) 'face '((:foreground "red")(:weight bold)))))
+ (setq result (setq txt (propertize txt 'face '((:foreground "blue")))))
+ (put-text-property (match-beginning 2) (match-end 2) 'face '((:foreground "red")(:weight bold)) txt))
+ (setq result
+ (if (>= emacs-major-version 22)
+ (list :propertize txt 'face '((:foreground "blue")))
+ (setq txt (propertize txt 'face '((:foreground "blue")))))))
+ result))
+
+(defun sqlplus-font-lock (type-symbol limit)
+ (let ((sqlplus-font-lock-regexps (sqlplus-get-font-lock-regexps)))
+ (when sqlplus-font-lock-regexps
+ (let ((regexp (gethash type-symbol sqlplus-font-lock-regexps)))
+ (when regexp
+ (re-search-forward regexp limit t))))))
+
+;; Local in input buffer (sqlplus-mode)
+(defvar sqlplus-command-overlay nil)
+(make-variable-buffer-local 'sqlplus-command-overlay)
+(defvar sqlplus-begin-command-overlay-arrow-position nil)
+(make-variable-buffer-local 'sqlplus-begin-command-overlay-arrow-position)
+(defvar sqlplus-end-command-overlay-arrow-position nil)
+(make-variable-buffer-local 'sqlplus-end-command-overlay-arrow-position)
+
+(defun sqlplus-highlight-current-sqlplus-command()
+ (when (and window-system sqlplus-command-highlighting-style)
+ (let* ((pair (sqlplus-mark-current))
+ (begin (and (car pair) (save-excursion (goto-char (car pair)) (skip-chars-forward " \t\n") (point))))
+ (end (and (cdr pair) (save-excursion (goto-char (cdr pair)) (skip-chars-backward " \t\n") (beginning-of-line) (point))))
+ (point-line-beg (save-excursion (beginning-of-line) (point)))
+ (overlay-begin begin)
+ (overlay-end end))
+ (when (and begin end)
+ (when (< end point-line-beg)
+ (save-excursion (goto-char point-line-beg) (when (eobp) (insert "\n")))
+ (setq end point-line-beg)
+ (setq overlay-end end))
+ (when (or (>= begin end) (< (point) begin))
+ (when (or (< (point) begin) (> begin end))
+ (setq overlay-begin nil
+ overlay-end nil))
+ (setq begin nil
+ end nil)))
+ (if (and overlay-begin overlay-end (memq sqlplus-command-highlighting-style '(background fringe-and-background)))
+ (progn
+ (setq overlay-end (save-excursion
+ (goto-char overlay-end)
+ (beginning-of-line 2)
+ (point)))
+ (move-overlay sqlplus-command-overlay overlay-begin overlay-end))
+ (move-overlay sqlplus-command-overlay 1 1))
+ (if (memq sqlplus-command-highlighting-style '(fringe fringe-and-background))
+ (progn
+ (put 'sqlplus-begin-command-overlay-arrow-position 'overlay-arrow-bitmap 'top-left-angle)
+ (put 'sqlplus-end-command-overlay-arrow-position 'overlay-arrow-bitmap 'bottom-left-angle)
+ (set-marker sqlplus-begin-command-overlay-arrow-position begin)
+ (set-marker sqlplus-end-command-overlay-arrow-position end))
+ (set-marker sqlplus-begin-command-overlay-arrow-position nil)
+ (set-marker sqlplus-end-command-overlay-arrow-position nil)))))
+
+(defun sqlplus-find-begin-of-sqlplus-command ()
+ (save-excursion
+ (beginning-of-line)
+ (while (and (not (bobp)) (save-excursion (end-of-line 0) (skip-chars-backward " \t") (equal (char-before) ?-)))
+ (beginning-of-line 0))
+ (point)))
+
+(defun sqlplus-find-end-of-sqlplus-command ()
+ (save-excursion
+ (end-of-line)
+ (while (progn (skip-chars-backward " \t") (and (not (eobp)) (equal (char-before) ?-)))
+ (end-of-line 2))
+ (point)))
+
+(defun sqlplus-set-font-lock-emacs-structures-for-level (level mode-symbol)
+ (let ((result (append sql-mode-oracle-font-lock-keywords
+ (default-value (cond ((equal level 3) 'sqlplus-font-lock-keywords-3)
+ ((equal level 2) 'sqlplus-font-lock-keywords-2)
+ ((equal level 1) 'sqlplus-font-lock-keywords-1)
+ (t nil))))))
+ (when (featurep 'plsql)
+ (setq result (append (symbol-value 'plsql-oracle-font-lock-fix-re) result)))
+ (setq result
+ (append
+ ;; Names for schemas, tables, synonyms, views, columns, sequences, packages, triggers and indexes
+ (when (> level 2)
+ (mapcar (lambda (pair)
+ (let ((type-symbol (car pair))
+ (face (cadr pair)))
+ (cons (eval `(lambda (limit) (sqlplus-font-lock ',type-symbol limit))) face)))
+ sqlplus-syntax-faces))
+ ;; SQL*Plus
+ (when (eq mode-symbol 'sqlplus-mode)
+ (unless sqlplus-commands-regexp-1
+ (flet ((first-form-fun (cmds) (mapcar (lambda (name) (car (sqlplus-full-forms name))) cmds))
+ (all-forms-fun (cmds) (mapcan 'sqlplus-full-forms cmds))
+ (sqlplus-commands-regexp-fun (form-fun cmds) (concat "^" (regexp-opt (funcall form-fun cmds) t) "\\b"))
+ (sqlplus-system-variables-fun (form-fun vars) (concat "\\b" (regexp-opt (funcall form-fun vars) t) "\\b")))
+ (flet ((sqlplus-v22-commands-font-lock-keywords-fun
+ (form-fun)
+ (delq nil
+ (mapcar
+ (lambda (command-info)
+ (let* ((names (car command-info))
+ (names-list (if (listp names) names (list names)))
+ (sublists (cdr command-info)))
+ (when sublists
+ (append (list (sqlplus-commands-regexp-fun form-fun names-list))
+ (mapcar (lambda (sublist)
+ (let ((face (car sublist))
+ (regexp (concat "\\b"
+ (regexp-opt (mapcan (lambda (name) (sqlplus-full-forms name))
+ (mapcan (lambda (elem)
+ (if (symbolp elem)
+ (copy-list (symbol-value elem))
+ (list elem)))
+ (cdr sublist)))
+ t)
+ "\\b")))
+ (list regexp '(sqlplus-find-end-of-sqlplus-command) nil (list 1 face))))
+ sublists)
+ (list '("\\(\\w+\\)" (sqlplus-find-end-of-sqlplus-command) nil (1 font-lock-sqlplus-face)))))))
+ sqlplus-commands))))
+ (let ((commands (mapcan
+ (lambda (command-info) (let ((names (car command-info))) (if (listp names) (copy-list names) (list names))))
+ sqlplus-commands)))
+ (setq sqlplus-commands-regexp-1 (sqlplus-commands-regexp-fun 'first-form-fun commands))
+ (setq sqlplus-commands-regexp-23 (sqlplus-commands-regexp-fun 'all-forms-fun commands))
+ (if (<= emacs-major-version 21)
+ (setq sqlplus-system-variables-regexp-1 (sqlplus-system-variables-fun 'first-form-fun sqlplus-system-variables)
+ sqlplus-system-variables-regexp-23 (sqlplus-system-variables-fun 'all-forms-fun sqlplus-system-variables))
+ (setq sqlplus-v22-commands-font-lock-keywords-1 (sqlplus-v22-commands-font-lock-keywords-fun 'first-form-fun)
+ sqlplus-v22-commands-font-lock-keywords-23 (sqlplus-v22-commands-font-lock-keywords-fun 'all-forms-fun)))))))
+ (append (list
+ ;; Comments (REM command)
+ (cons "^\\(rem\\)\\b\\(.*?\\)$" '((1 font-lock-keyword-face nil nil) (2 font-lock-comment-face t nil)))
+ ;; Predefined SQL*Plus variables
+ (cons (concat "\\b"
+ (regexp-opt '("_CONNECT_IDENTIFIER" "_DATE" "_EDITOR" "_O_VERSION" "_O_RELEASE" "_PRIVILEGE"
+ "_SQLPLUS_RELEASE" "_USER") t)
+ "\\b")
+ 'font-lock-builtin-face)
+ ;; SQL*Plus commands (+ shortcuts if level >= 2)
+ (cons
+ (concat (if (>= level 2) sqlplus-commands-regexp-23 sqlplus-commands-regexp-1) "\\|^\\(@@\\|@\\|!\\|/\\|\\$\\)" )
+ 'font-lock-keyword-face))
+ (if (<= emacs-major-version 21)
+ ;; SQL*Plus system variables (+ shortcuts if level >= 2)
+ (list (cons (if (>= level 2) sqlplus-system-variables-regexp-23 sqlplus-system-variables-regexp-1) 'font-lock-builtin-face))
+ ;; ver. >= 22
+ (if (>= level 2) sqlplus-v22-commands-font-lock-keywords-23 sqlplus-v22-commands-font-lock-keywords-1))))
+ ; (cons "\\b\\([a-zA-Z$_#0-9]+\\)\\b\\.\\(\\b[a-zA-Z$_#0-9]+\\b\\)" '((1 font-lock-type-face nil nil)(2 font-lock-variable-name-face nil nil)))
+ (list
+ ;; Extra Oracle syntax highlighting, not recognized by sql-mode or plsql-mode
+ (cons sqlplus-oracle-extra-types-re 'font-lock-type-face)
+ (cons sqlplus-oracle-extra-warning-words-re 'font-lock-warning-face)
+ (cons sqlplus-oracle-extra-types-re 'font-lock-type-face)
+ (cons sqlplus-oracle-extra-keywords-re 'font-lock-keyword-face)
+ (cons sqlplus-oracle-plsql-extra-reserved-words-re 'font-lock-keyword-face)
+ (if (string-match "XEmacs\\|Lucid" emacs-version)
+ (cons sqlplus-oracle-extra-pseudocolumns-re 'font-lock-preprocessor-face)
+ (cons sqlplus-oracle-extra-pseudocolumns-re 'font-lock-builtin-face))
+ (if (string-match "XEmacs\\|Lucid" emacs-version)
+ (cons sqlplus-oracle-extra-builtin-functions-re 'font-lock-preprocessor-face)
+ (cons sqlplus-oracle-extra-builtin-functions-re 'font-lock-builtin-face))
+ ;; SQL*Plus variable names, like '&name' or '&&name'
+ (cons "\\(\\b&[&a-zA-Z$_#0-9]+\\b\\)" 'font-lock-variable-name-face))
+ result
+ ;; Function calls
+ (when (>= level 2)
+ (list (cons "\\b\\(\\([a-zA-Z$_#0-9]+\\b\\)\\.\\)?\\(\\b[a-zA-Z$_#0-9]+\\b\\)\\s-*("
+ '((2 font-lock-type-face nil t)
+ (3 font-lock-function-name-face nil nil)))))))
+ result))
+
+(defun sqlplus-mode nil
+ "Mode for editing and executing SQL*Plus commands. Entry into this mode runs the hook
+'sqlplus-mode-hook'.
+
+Use \\[sqlplus] to start the SQL*Plus interpreter.
+
+Just position the cursor on or near the SQL*Plus statement you
+wish to send and press '\\[sqlplus-send-current]' to run it and
+display the results.
+
+Mode Specific Bindings:
+
+\\{sqlplus-mode-map}"
+ (interactive)
+ (run-hooks 'change-major-mode-hook)
+ (setq major-mode 'sqlplus-mode
+ mode-name "SQL*Plus")
+ (use-local-map sqlplus-mode-map)
+ (set-syntax-table sqlplus-mode-syntax-table)
+ (make-local-variable 'comment-start)
+ (make-local-variable 'comment-end)
+ (setq comment-start "/* "
+ comment-end " */")
+ (orcl-mode 1)
+ (setq sqlplus-font-lock-keywords-1 (sqlplus-set-font-lock-emacs-structures-for-level 1 major-mode)
+ sqlplus-font-lock-keywords-2 (sqlplus-set-font-lock-emacs-structures-for-level 2 major-mode)
+ sqlplus-font-lock-keywords-3 (sqlplus-set-font-lock-emacs-structures-for-level 3 major-mode))
+ (when (featurep 'plsql)
+ (set (make-local-variable 'indent-line-function)
+ (lambda () (interactive) (condition-case err (funcall (symbol-function 'plsql-indent)) (error (message "Error: %S" err)))))
+ (set (make-local-variable 'indent-region-function) 'plsql-indent-region)
+ (set (make-local-variable 'align-mode-rules-list) 'plsql-align-rules-list))
+ (setq font-lock-defaults sqlplus-font-lock-defaults)
+ (unless sqlplus-connect-string
+ (let ((potential-connect-string (sqlplus-get-potential-connect-string (buffer-file-name))))
+ (when (and potential-connect-string
+ (get-process (sqlplus-get-process-name potential-connect-string)))
+ (setq sqlplus-connect-string potential-connect-string))))
+ (set (make-local-variable 'font-lock-extend-after-change-region-function)
+ (lambda (beg end old-len)
+ (cons (save-excursion (goto-char beg) (sqlplus-find-begin-of-sqlplus-command))
+ (save-excursion (goto-char end) (sqlplus-find-end-of-sqlplus-command)))))
+ (unless font-lock-sqlplus-face
+ (copy-face 'default 'font-lock-sqlplus-face)
+ (setq font-lock-sqlplus-face 'font-lock-sqlplus-face))
+ (turn-on-font-lock)
+ (unless frame-background-mode
+ (setq frame-background-mode (if (< (sqlplus-color-percentage (face-background 'default)) 50) 'dark 'light)))
+ (setq imenu-generic-expression '((nil "^--[ ]*\\([^;.\n]*\\)" 1)))
+ ;; if input buffer has sqlplus-mode then prepare it for command under cursor selection
+ (when (and (eq major-mode 'sqlplus-mode) (null sqlplus-begin-command-overlay-arrow-position))
+ (setq sqlplus-begin-command-overlay-arrow-position (make-marker)
+ sqlplus-end-command-overlay-arrow-position (make-marker)
+ sqlplus-command-overlay (make-overlay 1 1))
+ (overlay-put sqlplus-command-overlay 'face 'sqlplus-command-highlight-face)
+ (when (and (>= emacs-major-version 22) (not (memq 'sqlplus-begin-command-overlay-arrow-position overlay-arrow-variable-list)))
+ (push 'sqlplus-begin-command-overlay-arrow-position overlay-arrow-variable-list))
+ (when (and (>= emacs-major-version 22) (not (memq 'sqlplus-end-command-overlay-arrow-position overlay-arrow-variable-list)))
+ (push 'sqlplus-end-command-overlay-arrow-position overlay-arrow-variable-list))
+ (add-hook 'pre-command-hook (lambda ()
+ (set-marker sqlplus-begin-command-overlay-arrow-position nil)
+ (set-marker sqlplus-end-command-overlay-arrow-position nil))
+ nil t)
+ (add-hook 'post-command-hook (lambda ()
+ (sqlplus-clear-mouse-selection)
+ (set-marker sqlplus-begin-command-overlay-arrow-position nil)
+ (set-marker sqlplus-end-command-overlay-arrow-position nil))
+ nil t))
+ (run-hooks 'sqlplus-mode-hook))
+
+(defun sqlplus-color-percentage (color)
+ (truncate (* (/ (/ (reduce '+ (color-values color)) 3.0) 65535.0) 100.0)))
+
+(defun sqlplus-get-potential-connect-string (file-path)
+ (when file-path
+ (let* ((file-name (file-name-nondirectory file-path))
+ (extension (file-name-extension file-name))
+ (case-fold-search t))
+ (when (and extension
+ (string-match (concat "^" sqlplus-session-file-extension "$") extension)
+ (string-match "@" file-name))
+ (car (refine-connect-string (file-name-sans-extension file-name)))))))
+
+(defun sqlplus-check-connection ()
+ (if orcl-mode
+ (unless sqlplus-connect-string
+ (let* ((potential-connect-string (sqlplus-get-potential-connect-string (buffer-file-name)))
+ (connect-string (car (sqlplus-read-connect-string nil (or potential-connect-string
+ (caar (sqlplus-divide-connect-strings)))))))
+ (sqlplus connect-string (buffer-name))))
+ (error "Current buffer is not determined to communicate with Oracle")))
+
+;;; Utilitities
+
+(defun sqlplus-echo-in-buffer (buffer-name string &optional force-display hide-after-head)
+ "Displays string in the named buffer, creating the buffer if needed. If force-display is true, the buffer will appear
+if not already shown."
+ (let ((buffer (get-buffer buffer-name)))
+ (when buffer
+ (if force-display (display-buffer buffer))
+ (with-current-buffer buffer
+ (while (and (> (buffer-size) sqlplus-output-buffer-max-size)
+ (progn (goto-char (point-min))
+ (unless (eobp) (forward-char))
+ (re-search-forward (concat "^" (regexp-quote sqlplus-output-separator)) nil t)))
+ (delete-region 1 (- (point) (length sqlplus-output-separator))))
+
+ (goto-char (point-max))
+ (let ((start-point (point)))
+ (insert string)
+ (when hide-after-head
+ (let ((from-pos (string-match "\n" string))
+ (keymap (make-sparse-keymap))
+ overlay)
+ (when from-pos
+ (setq overlay (make-overlay (+ start-point from-pos) (- (+ start-point (length string)) 2)))
+ (when (or (not (consp buffer-invisibility-spec))
+ (not (assq 'hide-symbol buffer-invisibility-spec)))
+ (add-to-invisibility-spec '(hide-symbol . t)))
+ (overlay-put overlay 'invisible 'hide-symbol)
+ (put-text-property start-point (- (+ start-point (length string)) 2) 'help-echo string)
+ (put-text-property start-point (- (+ start-point (length string)) 2) 'mouse-face 'highlight)
+ (put-text-property start-point (- (+ start-point (length string)) 2) 'keymap sqlplus-output-buffer-keymap)))))
+ (if force-display
+ (set-window-point (get-buffer-window buffer-name) (point-max)))))))
+
+(defun sqlplus-verify-buffer (connect-string)
+ (let ((output-buffer-name (sqlplus-get-output-buffer-name connect-string))
+ (process-buffer-name (sqlplus-get-process-buffer-name connect-string)))
+ (when (not (get-buffer process-buffer-name))
+ (sqlplus-shutdown connect-string)
+ (error "No SQL*Plus session! Use 'M-x sqlplus' to start the SQL*Plus interpreter"))
+ (unless (get-buffer-process process-buffer-name)
+ (sqlplus-shutdown connect-string)
+ (error "Buffer '%s' is not talking to anybody!" output-buffer-name)))
+ t)
+
+(defun sqlplus-get-context (connect-string &optional id)
+ (let ((process-buffer (sqlplus-get-process-buffer-name connect-string)))
+ (when process-buffer
+ (with-current-buffer process-buffer
+ (when id
+ (while (and sqlplus-command-contexts
+ (not (equal (sqlplus-get-context-value (car sqlplus-command-contexts) :id) id)))
+ (setq sqlplus-command-contexts (cdr sqlplus-command-contexts))))
+ (car sqlplus-command-contexts)))))
+
+(defun sqlplus-get-context-value (context var-symbol)
+ (cdr (assq var-symbol context)))
+
+(defun sqlplus-set-context-value (context var-symbol value)
+ (let ((association (assq var-symbol context)))
+ (if association
+ (setcdr association value)
+ (setcdr context (cons (cons var-symbol value) (cdr context))))
+ context))
+
+(defun sqlplus-mark-current ()
+ "Marks the current SQL for sending to the SQL*Plus process. Marks are placed around a region defined by empty lines."
+ (let (begin end empty-line-p empty-line-p next-line-included tail-p)
+ (save-excursion
+ (beginning-of-line)
+ (setq empty-line-p (when (looking-at "^[ \t]*\\(\n\\|\\'\\)") (point)))
+ (setq next-line-included (and empty-line-p (save-excursion (skip-chars-forward " \t\n") (> (current-column) 0))))
+ (setq tail-p (and empty-line-p
+ (or (bobp) (save-excursion (beginning-of-line 0) (looking-at "^[ \t]*\n"))))))
+ (unless tail-p
+ (save-excursion
+ (end-of-line)
+ (re-search-backward "\\`\\|\n[\r\t ]*\n[^ \t]" nil t)
+ (skip-syntax-forward "-")
+ (setq begin (point)))
+ (save-excursion
+ (beginning-of-line)
+ (re-search-forward "\n[\r\t ]*\n[^ \t]\\|\\'" nil t)
+ (unless (zerop (length (match-string 0)))
+ (backward-char 1))
+ (skip-syntax-backward "-")
+ (setq end (or (and (not next-line-included) empty-line-p) (point)))))
+ (cons begin end)))
+
+;;; Transmission Commands
+
+(defun sqlplus-send-current (arg &optional html)
+ "Send the current SQL command(s) to the SQL*Plus process. With argument, show results in raw form."
+ (interactive "P")
+ (sqlplus-check-connection)
+ (when (buffer-file-name)
+ (condition-case err
+ (save-buffer)
+ (error (message (error-message-string err)))))
+ (let ((region (sqlplus-mark-current)))
+ (setq sqlplus-region-beginning-pos (car region)
+ sqlplus-region-end-pos (cdr region)))
+ (if (and sqlplus-region-beginning-pos sqlplus-region-end-pos)
+ (sqlplus-send-region arg sqlplus-region-beginning-pos sqlplus-region-end-pos nil html)
+ (error "Point doesn't indicate any command to execute")))
+
+(defun sqlplus-send-current-html (arg)
+ (interactive "P")
+ (sqlplus-send-current arg t))
+
+
+;;; SQLPLUS-Output Buffer Operations -
+
+(defun sqlplus--show-buffer (connect-string fcn args)
+ (let* ((output-buffer-name (sqlplus-get-output-buffer-name connect-string)))
+ (sqlplus-verify-buffer connect-string)
+ (if sqlplus-suppress-show-output-buffer
+ (with-current-buffer (get-buffer output-buffer-name)
+ (if fcn (condition-case err (apply fcn args) (error (message (error-message-string err))))))
+ (if (not (eq (window-buffer (selected-window)) (get-buffer output-buffer-name)))
+ (switch-to-buffer-other-window output-buffer-name))
+ (if fcn (condition-case err (apply fcn args) (error (message (error-message-string err))))))))
+
+(defun sqlplus-show-buffer (&optional connect-string fcn &rest args)
+ "Makes the SQL*Plus output buffer visible in the other window."
+ (interactive)
+ (setq connect-string (or connect-string sqlplus-connect-string))
+ (unless connect-string
+ (error "Current buffer is disconnected!"))
+ (let ((output-buffer-name (sqlplus-get-output-buffer-name connect-string)))
+ (if (and output-buffer-name
+ (eq (current-buffer) (get-buffer output-buffer-name)))
+ (sqlplus--show-buffer connect-string fcn args)
+ (save-excursion
+ (save-selected-window
+ (sqlplus--show-buffer connect-string fcn args))))))
+
+(fset 'sqlplus-buffer-display-window 'sqlplus-show-buffer)
+
+(defun sqlplus-buffer-scroll-up (&optional connect-string)
+ "Scroll-up in the SQL*Plus output buffer window."
+ (interactive)
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'scroll-up))
+
+(defun sqlplus-buffer-scroll-down (&optional connect-string)
+ "Scroll-down in the SQL*Plus output buffer window."
+ (interactive)
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'scroll-down))
+
+(defun sqlplus-scroll-left (num)
+ (call-interactively 'scroll-left))
+
+(defun sqlplus-scroll-right (num)
+ (call-interactively 'scroll-right))
+
+(defun sqlplus-buffer-scroll-left (num &optional connect-string)
+ "Scroll-left in the SQL*Plus output buffer window."
+ (interactive "p")
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'sqlplus-scroll-left (* num (/ (window-width) 2))))
+
+(defun sqlplus-buffer-scroll-right (num &optional connect-string)
+ "Scroll-right in the SQL*Plus output buffer window."
+ (interactive "p")
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'sqlplus-scroll-right (* num (/ (window-width) 2))))
+
+(defun sqlplus-buffer-mark-current (&optional connect-string)
+ "Mark the current position in the SQL*Plus output window."
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'sqlplus-buffer-make-mark))
+
+(defun sqlplus-buffer-make-mark (&optional connect-string)
+ "Set the sqlplus-buffer-marker."
+ (setq sqlplus-buffer-mark (copy-marker (point))))
+
+(defun sqlplus-buffer-redisplay-current (&optional connect-string)
+ "Go to the current sqlplus-buffer-mark."
+ (interactive)
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'sqlplus-goto-mark))
+
+(defun sqlplus-goto-mark ()
+ (goto-char sqlplus-buffer-mark)
+ (recenter 0))
+
+(defun sqlplus-buffer-top (&optional connect-string)
+ "Goto the top of the SQL*Plus output buffer."
+ (interactive)
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'sqlplus-beginning-of-buffer))
+
+(defun sqlplus-beginning-of-buffer nil (goto-char (point-min)))
+
+(defun sqlplus-buffer-bottom (&optional connect-string)
+ "Goto the bottom of the SQL*Plus output buffer."
+ (interactive)
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'sqlplus-end-of-buffer))
+
+(defun sqlplus-end-of-buffer nil (goto-char (point-max)) (unless sqlplus-suppress-show-output-buffer (recenter -1)))
+
+(defun sqlplus-buffer-erase (&optional connect-string)
+ "Clear the SQL output buffer."
+ (interactive)
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'erase-buffer))
+
+(defun sqlplus-buffer-next-command (&optional connect-string)
+ "Search for the next command in the SQL*Plus output buffer."
+ (interactive)
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'sqlplus-next-command))
+
+(defun sqlplus-next-command nil
+ "Search for the next command in the SQL*Plus output buffer."
+ (cond ((re-search-forward (concat "^" (regexp-quote sqlplus-output-separator)) nil t)
+ (forward-line 2)
+ (recenter 0))
+ (t (beep) (message "No more commands."))))
+
+(defun sqlplus-buffer-prev-command (&optional connect-string)
+ "Search for the previous command in the SQL*Plus output buffer."
+ (interactive)
+ (sqlplus-show-buffer (or connect-string sqlplus-connect-string) 'sqlplus-previous-command))
+
+(defun sqlplus-previous-command nil
+ "Search for the previous command in the SQL*Plus output buffer."
+ (let ((start (point)))
+ (re-search-backward (concat "^" (regexp-quote sqlplus-output-separator)) nil t)
+ (cond ((re-search-backward (concat "^" (regexp-quote sqlplus-output-separator)) nil t)
+ (forward-line 2)
+ (recenter 0))
+ (t
+ (message "No more commands.") (beep)
+ (goto-char start)))))
+
+(defun sqlplus-send-interrupt nil
+ "Send an interrupt the the SQL*Plus interpreter process."
+ (interactive)
+ (sqlplus-check-connection)
+ (let ((connect-string sqlplus-connect-string))
+ (sqlplus-verify-buffer connect-string)
+ (interrupt-process (get-process (sqlplus-get-process-name connect-string)))))
+
+
+;;; SQL Interpreter
+
+(defun refine-connect-string (connect-string &optional no-slash)
+ "Z connect stringa do SQL*Plusa wycina haslo, tj. np. 'ponaglenia/x@SID' -> ('ponaglenia@SID' . 'x')."
+ (let (result passwd)
+ (when connect-string
+ (setq result
+ (if (string-match "\\(\\`[^@/]*?\\)/\\([^/@:]*\\)\\(.*?\\'\\)" connect-string)
+ (progn
+ (setq passwd (match-string 2 connect-string))
+ (concat (match-string 1 connect-string) (match-string 3 connect-string)))
+ connect-string))
+ (when no-slash
+ (while (string-match "/" result)
+ (setq result (replace-match "!" nil t result)))))
+ (cons result passwd)))
+
+(defun sqlplus-get-output-buffer-name (connect-string)
+ (concat "*" (car (refine-connect-string connect-string)) "*"))
+
+(defun sqlplus-get-input-buffer-name (connect-string)
+ (concat (car (refine-connect-string connect-string)) (concat "." sqlplus-session-file-extension)))
+
+(defun sqlplus-get-history-buffer-name (connect-string)
+ (concat " " (car (refine-connect-string connect-string)) "-hist"))
+
+(defun sqlplus-get-process-buffer-name (connect-string)
+ (concat " " (car (refine-connect-string connect-string))))
+
+(defun sqlplus-get-process-name (connect-string)
+ (car (refine-connect-string connect-string)))
+
+(defun sqlplus-read-connect-string (&optional connect-string default-connect-string)
+ "Ask user for connect string with password, with DEFAULT-CONNECT-STRING proposed.
+DEFAULT-CONNECT-STRING nil means first inactive connect-string on sqlplus-connect-strings-alist.
+CONNECT-STRING non nil means ask for password only if CONNECT-STRING has no password itself.
+Returns (qualified-connect-string refined-connect-string)."
+ (unless default-connect-string
+ (let ((inactive-connect-strings (cdr (sqlplus-divide-connect-strings))))
+ (setq default-connect-string
+ (some (lambda (pair)
+ (when (member (car pair) inactive-connect-strings) (car pair)))
+ sqlplus-connect-strings-alist))))
+ (let* ((cs (downcase (or connect-string
+ (read-string (format "Connect string%s: " (if default-connect-string (format " [default %s]" default-connect-string) ""))
+ nil 'sqlplus-connect-string-history default-connect-string))))
+ (pair (refine-connect-string cs))
+ (refined-cs (car pair))
+ (password (cdr pair))
+ (was-password password)
+ (association (assoc refined-cs sqlplus-connect-strings-alist)))
+ (unless (or password current-prefix-arg)
+ (setq password (cdr association)))
+ (unless password
+ (setq password (read-passwd (format "Password for %s: " cs))))
+ (unless was-password
+ (if (string-match "@" cs)
+ (setq cs (replace-match (concat "/" password "@") t t cs))
+ (setq cs (concat cs "/" password))))
+ (list cs refined-cs)))
+
+(defun sqlplus (connect-string &optional input-buffer-name output-buffer-flag)
+ "Create SQL*Plus process connected to Oracle according to
+CONNECT-STRING, open (or create) input buffer with specified
+name (do not create if INPUT-BUFFER-NAME is nil).
+OUTPUT-BUFFER-FLAG has meanings: nil or SHOW-OUTPUT-BUFFER -
+create output buffer and show it, DONT-SHOW-OUTPUT-BUFFER -
+create output buffer but dont show it, DONT-CREATE-OUTPUT-BUFFER
+- dont create output buffer"
+ (interactive (let ((pair (sqlplus-read-connect-string)))
+ (list (car pair) (concat (cadr pair) (concat "." sqlplus-session-file-extension)))))
+ (set (make-local-variable 'comment-start-skip) "/\\*+ *\\|--+ *")
+ (set (make-local-variable 'comment-multi-line) t)
+ ;; create sqlplus-session-cache-dir if not exists
+ (when sqlplus-session-cache-dir
+ (condition-case err
+ (unless (file-directory-p sqlplus-session-cache-dir)
+ (make-directory sqlplus-session-cache-dir t))
+ (error (message (error-message-string err)))))
+ (let* ((was-input-buffer (and input-buffer-name (get-buffer input-buffer-name)))
+ (input-buffer (or was-input-buffer
+ (when input-buffer-name
+ (if sqlplus-session-cache-dir
+ (let ((buf (find-file-noselect
+ (concat
+ (file-name-as-directory sqlplus-session-cache-dir)
+ (car (refine-connect-string connect-string t))
+ (concat "." sqlplus-session-file-extension)))))
+ (condition-case nil
+ (with-current-buffer buf
+ (rename-buffer input-buffer-name))
+ (error nil))
+ buf)
+ (get-buffer-create input-buffer-name)))))
+ (output-buffer (or (and (not (eq output-buffer-flag 'dont-create-output-buffer))
+ (get-buffer-create (sqlplus-get-output-buffer-name connect-string)))
+ (get-buffer (sqlplus-get-output-buffer-name connect-string))))
+ (process-name (sqlplus-get-process-name connect-string))
+ (process-buffer-name (sqlplus-get-process-buffer-name connect-string))
+ (was-process (get-process process-name))
+ process-created
+ (process (or was-process
+ (let (proc)
+ (puthash (car (refine-connect-string connect-string))
+ (make-sqlplus-global-struct :font-lock-regexps (make-hash-table :test 'equal)
+ :side-view-buffer (when (featurep 'ide-skel) (sqlplus-create-side-view-buffer connect-string)))
+ sqlplus-global-structures)
+ ;; push current connect string to the beginning of sqlplus-connect-strings-alist
+ (let* ((refined-cs (refine-connect-string connect-string)))
+ (setq sqlplus-connect-strings-alist (delete* (car refined-cs) sqlplus-connect-strings-alist :test 'string= :key 'car))
+ (push refined-cs sqlplus-connect-strings-alist))
+ (sqlplus-get-history-buffer connect-string)
+ (when output-buffer
+ (with-current-buffer output-buffer
+ (erase-buffer)))
+ (setq process-created t
+ proc (start-process process-name process-buffer-name sqlplus-command connect-string))
+ (set-process-sentinel proc (lambda (process event)
+ (let ((proc-buffer (buffer-name (process-buffer process)))
+ (output-buffer (get-buffer (sqlplus-get-output-buffer-name (process-name process))))
+ err-msg
+ (exited-abnormally (string-match "\\`exited abnormally with code" event)))
+ (when output-buffer
+ (with-current-buffer output-buffer
+ (goto-char (point-max))
+ (insert (format "\n%s" event))
+ (when exited-abnormally
+ (setq sqlplus-connect-strings-alist
+ (delete* (car (refine-connect-string sqlplus-connect-string))
+ sqlplus-connect-strings-alist :test 'string= :key 'car))
+ (when proc-buffer
+ (with-current-buffer proc-buffer
+ (save-excursion
+ (goto-char (point-min))
+ (when (re-search-forward "^ORA-[0-9]+.*$" nil t)
+ (setq err-msg (match-string 0))))
+ (erase-buffer)))
+ (when err-msg
+ (insert (concat "\n" err-msg)))))))))
+ (process-kill-without-query proc (not sqlplus-kill-processes-without-query-on-exit-flag))
+ (set-process-filter proc 'sqlplus-process-filter)
+ (with-current-buffer (get-buffer process-buffer-name)
+ (setq sqlplus-process-p connect-string))
+ proc))))
+ (when output-buffer
+ (with-current-buffer output-buffer
+ (orcl-mode 1)
+ (set (make-local-variable 'line-move-ignore-invisible) t)
+ (setq sqlplus-output-buffer-keymap (make-sparse-keymap)
+ sqlplus-connect-string connect-string
+ truncate-lines t)
+ (define-key sqlplus-output-buffer-keymap "\C-m" (lambda () (interactive) (sqlplus-output-buffer-hide-show)))
+ (define-key sqlplus-output-buffer-keymap [S-mouse-2] (lambda (event) (interactive "@e") (sqlplus-output-buffer-hide-show)))
+ (local-set-key [S-return] 'sqlplus-send-user-string)))
+ (when input-buffer
+ (with-current-buffer input-buffer
+ (setq sqlplus-connect-string connect-string)))
+ ;; if input buffer was created then switch it to sqlplus-mode
+ (when (and input-buffer (not was-input-buffer))
+ (with-current-buffer input-buffer
+ (unless (eq major-mode 'sqlplus-mode)
+ (sqlplus-mode)))
+ (when font-lock-mode (font-lock-mode 1))
+ (set-window-buffer (sqlplus-get-workbench-window) input-buffer))
+ ;; if process was created then get information for font lock
+ (when process-created
+ (sqlplus-execute connect-string nil nil (sqlplus-initial-strings) 'no-echo)
+ (let ((plsql-font-lock-level (sqlplus-font-lock-value-in-major-mode font-lock-maximum-decoration 'plsql-mode))
+ (sqlplus-font-lock-level (sqlplus-font-lock-value-in-major-mode font-lock-maximum-decoration 'sqlplus-mode)))
+ (when (or (equal plsql-font-lock-level t) (equal sqlplus-font-lock-level t)
+ (and (numberp plsql-font-lock-level) (>= plsql-font-lock-level 2))
+ (and (numberp sqlplus-font-lock-level) (>= sqlplus-font-lock-level 2)))
+ (sqlplus-hidden-select connect-string
+ (concat "select distinct column_name, 'COLUMN', ' ' from user_tab_columns where column_name not like 'BIN$%'\n"
+ "union\n"
+ "select username, 'SCHEMA', ' ' from all_users where username not like 'BIN$%'\n"
+ "union\n"
+ "select object_name, object_type, decode( status, 'INVALID', 'I', ' ' ) from user_objects\n"
+ "where object_name not like 'BIN$%'\n"
+ "and object_type in ('VIEW', 'SEQUENCE', 'PACKAGE', 'TRIGGER', 'TABLE', 'SYNONYM', 'INDEX', 'FUNCTION', 'PROCEDURE');")
+ 'sqlplus-my-handler))))
+ (when input-buffer
+ (save-selected-window
+ (when (equal (selected-window) (sqlplus-get-side-window))
+ (select-window (sqlplus-get-workbench-window)))
+ (switch-to-buffer input-buffer)))
+ (let ((saved-window (cons (selected-window) (window-buffer (selected-window))))
+ (input-buffer (get-buffer (sqlplus-get-input-buffer-name connect-string))))
+ (when (or (eq output-buffer-flag 'show-output-buffer) (null output-buffer-flag))
+ (sqlplus-show-buffer connect-string))
+ (if (window-live-p (car saved-window))
+ (select-window (car saved-window))
+ (if (get-buffer-window (cdr saved-window))
+ (select-window (get-buffer-window (cdr saved-window)))
+ (when (and input-buffer
+ (get-buffer-window input-buffer))
+ (select-window (get-buffer-window input-buffer))))))
+ ;; executing initial sequence (between /* init */ and /* end */)
+ (when (and (not was-process) input-buffer)
+ (with-current-buffer input-buffer
+ (save-excursion
+ (goto-char (point-min))
+ (when (re-search-forward (concat "^" sqlplus-init-sequence-start-regexp "\\s-*\n\\(\\(.\\|\n\\)*?\\)\n" sqlplus-init-sequence-end-regexp) nil t)
+ (when (match-string 1)
+ (sqlplus-send-region nil (match-beginning 1) (match-end 1) t))))))))
+
+;; Command under cursor selection mechanism
+(when window-system
+ (run-with-idle-timer 0 t (lambda () (when (eq major-mode 'sqlplus-mode) (sqlplus-highlight-current-sqlplus-command))))
+ (run-with-idle-timer 1 t (lambda ()
+ (when (eq major-mode 'sqlplus-mode)
+ (if (>= (sqlplus-color-percentage (face-background 'default)) 50)
+ (set-face-attribute 'sqlplus-command-highlight-face nil
+ :background (sqlplus-shine-color (face-background 'default) (- sqlplus-command-highlighting-percentage)))
+ (set-face-attribute 'sqlplus-command-highlight-face nil
+ :background (sqlplus-shine-color (face-background 'default) sqlplus-command-highlighting-percentage)))))))
+
+(defun sqlplus-output-buffer-hide-show ()
+ (if (and (consp buffer-invisibility-spec)
+ (assq 'hide-symbol buffer-invisibility-spec))
+ (remove-from-invisibility-spec '(hide-symbol . t))
+ (add-to-invisibility-spec '(hide-symbol . t)))
+ (let ((overlay (car (overlays-at (point)))))
+ (when overlay
+ (goto-char (overlay-start overlay))
+ (beginning-of-line)))
+ (recenter 0))
+
+(defun sqlplus-font-lock-value-in-major-mode (alist mode-symbol)
+ (if (consp alist)
+ (cdr (or (assq mode-symbol alist) (assq t alist)))
+ alist))
+
+(defun sqlplus-get-history-buffer (connect-string)
+ (let* ((history-buffer-name (sqlplus-get-history-buffer-name connect-string))
+ (history-buffer (get-buffer history-buffer-name)))
+ (unless history-buffer
+ (setq history-buffer (get-buffer-create history-buffer-name))
+ (with-current-buffer history-buffer
+ (setq sqlplus-cs connect-string)
+ (add-hook 'kill-buffer-hook 'sqlplus-history-buffer-kill-function nil t)))
+ history-buffer))
+
+(defun sqlplus-history-buffer-kill-function ()
+ (when sqlplus-history-dir
+ (condition-case err
+ (progn
+ (unless (file-directory-p sqlplus-history-dir)
+ (make-directory sqlplus-history-dir t))
+ (append-to-file 1 (buffer-size) (concat (file-name-as-directory sqlplus-history-dir) (car (refine-connect-string sqlplus-cs t)) "-hist.txt")))
+ (error (message (error-message-string err))))))
+
+(defun sqlplus-soft-shutdown (connect-string)
+ (unless (some (lambda (buffer)
+ (with-current-buffer buffer
+ (and sqlplus-connect-string
+ (equal (car (refine-connect-string sqlplus-connect-string))
+ (car (refine-connect-string connect-string))))))
+ (buffer-list))
+ (sqlplus-shutdown connect-string)))
+
+(defun sqlplus-shutdown (connect-string &optional dont-kill-input-buffer)
+ "Kill input, output and process buffer for specified CONNECT-STRING."
+ (let ((input-buffers (delq nil (mapcar (lambda (buffer) (with-current-buffer buffer
+ (when (and (eq major-mode 'sqlplus-mode)
+ (equal (car (refine-connect-string sqlplus-connect-string))
+ (car (refine-connect-string connect-string))))
+ buffer))) (buffer-list))))
+ (output-buffer (get-buffer (sqlplus-get-output-buffer-name connect-string)))
+ (history-buffer (get-buffer (sqlplus-get-history-buffer-name connect-string)))
+ (process-buffer (get-buffer (sqlplus-get-process-buffer-name connect-string))))
+ (when history-buffer
+ (kill-buffer history-buffer))
+ (when (and process-buffer
+ (with-current-buffer process-buffer sqlplus-process-p))
+ (when (get-process (sqlplus-get-process-name connect-string))
+ (delete-process (sqlplus-get-process-name connect-string)))
+ (kill-buffer process-buffer))
+ (when (and output-buffer
+ (with-current-buffer output-buffer sqlplus-connect-string))
+ (when (buffer-file-name output-buffer)
+ (with-current-buffer output-buffer
+ (save-buffer)))
+ (kill-buffer output-buffer))
+ (dolist (input-buffer input-buffers)
+ (when (buffer-file-name input-buffer)
+ (with-current-buffer input-buffer
+ (save-buffer)))
+ (unless dont-kill-input-buffer
+ (kill-buffer input-buffer)))))
+
+(defun sqlplus-magic ()
+ (let (bottom-message pos)
+ (delete-region (point) (progn (beginning-of-line 3) (point)))
+ (setq bottom-message (buffer-substring (point) (save-excursion (end-of-line) (point))))
+ (setq pos (point))
+ (when (re-search-forward "^-------" nil t)
+ (delete-region pos (progn (beginning-of-line 2) (point)))
+ (while (re-search-forward "|" (save-excursion (end-of-line) (point)) t)
+ (save-excursion
+ (backward-char)
+ (if (or (bolp) (save-excursion (forward-char) (eolp)))
+ (while (member (char-after) '(?- ?|))
+ (delete-char 1)
+ (sqlplus-next-line))
+ (while (member (char-after) '(?- ?|))
+ (delete-char 1)
+ (insert " ")
+ (backward-char)
+ (sqlplus-next-line)))))
+ (beginning-of-line 3)
+ (re-search-forward "^---" nil t)
+ (goto-char (match-beginning 0))
+ (delete-region (point) (point-max))
+ (insert (format "%s\n\n%s\n" sqlplus-repfooter bottom-message))
+ )))
+
+
+(defun sqlplus-process-command-output (context connect-string begin end interrupted)
+ (let* ((output-buffer-name (sqlplus-get-output-buffer-name connect-string))
+ (output-buffer (get-buffer output-buffer-name))
+ (process-buffer (sqlplus-get-process-buffer-name connect-string))
+ str
+ error-list show-errors-p
+ slips-count
+ (user-function (sqlplus-get-context-value context :user-function))
+ (result-function (sqlplus-get-context-value context :result-table-function))
+ (last-compiled-file-path (sqlplus-get-context-value context :last-compiled-file-path))
+ (compilation-expected (sqlplus-get-context-value context :compilation-expected))
+ (columns-count (sqlplus-get-context-value context :columns-count))
+ (sql (sqlplus-get-context-value context :sql))
+ (original-buffer (current-buffer))
+ explain-plan
+ table-data)
+ (setq slips-count columns-count)
+ (with-temp-buffer
+ (insert-buffer-substring original-buffer begin end)
+ (goto-char (point-min))
+ (while (re-search-forward (concat "\n+" (regexp-quote sqlplus-page-separator) "\n") nil t)
+ (replace-match "\n"))
+ (goto-char (point-min))
+ (setq str (buffer-string))
+ (while (string-match (concat "^" (regexp-quote sqlplus-repfooter) "\n") str)
+ (setq str (replace-match "" nil t str)))
+
+ ;; compilation errors?
+ (goto-char (point-min))
+ (skip-chars-forward "\n\t ")
+ (when (and ;;(not (equal (point) (point-max)))
+ plsql-auto-parse-errors-flag
+ output-buffer
+ last-compiled-file-path
+ (re-search-forward "^\\(LINE/COL\\|\\(SP2\\|CPY\\|ORA\\)-[0-9]\\{4,5\\}:\\|No errors\\|Nie ma b..d.w\\|Keine Fehler\\|No hay errores\\|Identificateur erron\\|Nessun errore\\|N..o h.. erros\\)" nil t))
+ (goto-char (point-min))
+ (setq error-list (plsql-parse-errors last-compiled-file-path)
+ show-errors-p compilation-expected))
+
+ ;; explain?
+ (let ((case-fold-search t))
+ (goto-char (point-min))
+ (skip-chars-forward "\n\t ")
+ (when (and sql
+ (string-match "^[\n\t ]*explain\\>" sql)
+ (looking-at "Explained[.]"))
+ (delete-region (point-min) (point-max))
+ (setq str "")
+ (sqlplus--send connect-string
+ "select plan_table_output from table(dbms_xplan.display(null, null, 'TYPICAL'));"
+ nil
+ 'no-echo
+ nil)))
+
+ ;; plan table output?
+ (goto-char (point-min))
+ (skip-chars-forward "\n\t ")
+ (when (and (looking-at "^PLAN_TABLE_OUTPUT\n")
+ sqlplus-format-output-tables-flag
+ (not compilation-expected)
+ (not show-errors-p))
+ (sqlplus-magic) ;; TODO
+ (goto-char (point-min))
+ (re-search-forward "^[^\n]+" nil t)
+ (delete-region (point-min) (progn (beginning-of-line) (point)))
+ ;; (setq slips-count 1)
+ (setq explain-plan t)
+ (setq table-data (save-excursion (sqlplus-parse-output-table interrupted))))
+
+ ;; query result?
+ (goto-char (point-min))
+ (when (and sqlplus-format-output-tables-flag
+ (not compilation-expected)
+ (not table-data)
+ (not show-errors-p)
+ (not (re-search-forward "^LINE/COL\\>" nil t)))
+ (setq table-data (save-excursion (sqlplus-parse-output-table interrupted))))
+ (if user-function
+ (funcall user-function connect-string context (or table-data str))
+ (when output-buffer
+ (with-current-buffer output-buffer
+ (save-excursion
+ (goto-char (point-max))
+ (cond (show-errors-p
+ (insert str)
+ (plsql-display-errors (file-name-directory last-compiled-file-path) error-list)
+ (let* ((plsql-buf (get-file-buffer last-compiled-file-path))
+ (win (when plsql-buf (car (get-buffer-window-list plsql-buf)))))
+ (when win
+ (select-window win))))
+ ((and table-data
+ (car table-data))
+ (if result-function
+ (funcall result-function connect-string table-data)
+ (let ((b (point))
+ (warning-regexp (regexp-opt sqlplus-explain-plan-warning-regexps))
+ e)
+ (sqlplus-draw-table table-data slips-count)
+ (when interrupted (insert ". . .\n"))
+ (setq e (point))
+ (when explain-plan
+ (save-excursion
+ (goto-char b)
+ (while (re-search-forward warning-regexp nil t)
+ (add-text-properties (match-beginning 0) (match-end 0)
+ (list 'face (list (cons 'foreground-color "red") (list :weight 'bold)
+ (get-text-property (match-beginning 0) 'face))))))))))
+ (t
+ (insert str))))))))))
+
+(defun sqlplus-result-online (connect-string context string last-chunk)
+ (let ((output-buffer (sqlplus-get-output-buffer-name connect-string)))
+ (when output-buffer
+ (with-current-buffer output-buffer
+ (save-excursion
+ (goto-char (point-max))
+ (insert string))))))
+
+(defvar sqlplus-prompt-regexp (concat "^" (regexp-quote sqlplus-prompt-prefix) "\\([0-9]+\\)" (regexp-quote sqlplus-prompt-suffix)))
+
+(defvar sqlplus-page-separator-regexp (concat "^" (regexp-quote sqlplus-page-separator)))
+
+(defun sqlplus-process-filter (process string)
+ (with-current-buffer (process-buffer process)
+ (let* ((prompt-safe-len (+ (max (+ (length sqlplus-prompt-prefix) (length sqlplus-prompt-suffix)) (length sqlplus-page-separator)) 10))
+ current-context-id filter-input-processed
+ (connect-string sqlplus-process-p)
+ (chunk-begin-pos (make-marker))
+ (chunk-end-pos (make-marker))
+ (prompt-found (make-marker))
+ (context (sqlplus-get-context connect-string current-context-id))
+ (current-command-input-buffer-name (sqlplus-get-context-value context :current-command-input-buffer-name))
+ (current-command-input-buffer-names (when current-command-input-buffer-name (list current-command-input-buffer-name))))
+ (set-marker chunk-begin-pos (max 1 (- (point) prompt-safe-len)))
+ (goto-char (point-max))
+ (insert string)
+ (unless current-command-input-buffer-names
+ (setq current-command-input-buffer-names
+ (delq nil (mapcar (lambda (buffer) (with-current-buffer buffer
+ (when (and (memq major-mode '(sqlplus-mode plsql-mode))
+ sqlplus-connect-string
+ (equal (car (refine-connect-string sqlplus-connect-string))
+ (car (refine-connect-string connect-string))))
+ buffer))) (buffer-list)))))
+ ;; fan animation
+ (dolist (current-command-input-buffer-name current-command-input-buffer-names)
+ (let ((input-buffer (get-buffer current-command-input-buffer-name)))
+ (when input-buffer
+ (with-current-buffer input-buffer
+ (setq sqlplus-fan
+ (cond ((equal sqlplus-fan "|") "/")
+ ((equal sqlplus-fan "/") "-")
+ ((equal sqlplus-fan "-") "\\")
+ ((equal sqlplus-fan "\\") "|")))
+ (put-text-property 0 (length sqlplus-fan) 'face '((foreground-color . "red")) sqlplus-fan)
+ (put-text-property 0 (length sqlplus-fan) 'help-echo (sqlplus-get-context-value context :sql) sqlplus-fan)
+ (force-mode-line-update)))))
+ (unwind-protect
+ (while (not filter-input-processed)
+ (let* ((context (sqlplus-get-context connect-string current-context-id))
+ (dont-parse-result (sqlplus-get-context-value context :dont-parse-result))
+ (current-command-input-buffer-name (sqlplus-get-context-value context :current-command-input-buffer-name))
+ (result-function (sqlplus-get-context-value context :result-function))
+ (skip-to-the-end-of-command (sqlplus-get-context-value context :skip-to-the-end-of-command)))
+ (set-marker prompt-found nil)
+ (goto-char chunk-begin-pos)
+ (set-marker chunk-end-pos
+ (if (or (re-search-forward sqlplus-prompt-regexp nil t)
+ (re-search-forward "^SQL> " nil t))
+ (progn
+ (set-marker prompt-found (match-end 0))
+ (when (match-string 1)
+ (setq current-context-id (string-to-number (match-string 1))))
+ (match-beginning 0))
+ (point-max)))
+ (cond ((and (equal chunk-begin-pos chunk-end-pos) ; at the end of command
+ (marker-position prompt-found))
+ ;; deactivate fan
+ (dolist (current-command-input-buffer-name current-command-input-buffer-names)
+ (let ((input-buffer (get-buffer current-command-input-buffer-name)))
+ (when input-buffer
+ (with-current-buffer input-buffer
+ (remove-text-properties 0 (length sqlplus-fan) '(face nil) sqlplus-fan)
+ (force-mode-line-update)))))
+ (delete-region 1 prompt-found)
+ (when dont-parse-result
+ (funcall (or result-function 'sqlplus-result-online) connect-string context "" t))
+ (sqlplus-set-context-value context :skip-to-the-end-of-command nil)
+ (set-marker chunk-begin-pos 1))
+ ((equal chunk-begin-pos chunk-end-pos)
+ (when dont-parse-result
+ (delete-region 1 (point-max)))
+ (setq filter-input-processed t))
+ (dont-parse-result
+ (funcall (or result-function 'sqlplus-result-online)
+ connect-string
+ context
+ (buffer-substring chunk-begin-pos chunk-end-pos)
+ (marker-position prompt-found))
+ (set-marker chunk-begin-pos chunk-end-pos))
+ (t
+ (when (not skip-to-the-end-of-command)
+ (goto-char (max 1 (- chunk-begin-pos 4010)))
+ (let ((page-separator-found
+ (save-excursion (let ((pos (re-search-forward (concat sqlplus-page-separator-regexp "[^-]*\\(^-\\|^<th\\b\\)") nil t)))
+ (when (and pos
+ (or (not (marker-position prompt-found))
+ (< pos prompt-found)))
+ (match-beginning 0))))))
+ (when (or (marker-position prompt-found) page-separator-found)
+ (goto-char (or page-separator-found chunk-end-pos))
+ (let ((end-pos (point))
+ (cur-msg (or (current-message) "")))
+ (sqlplus-set-context-value context :skip-to-the-end-of-command page-separator-found)
+ (when page-separator-found
+ (interrupt-process)
+ (save-excursion
+ (re-search-backward "[^ \t\n]\n" nil t)
+ (setq end-pos (match-end 0))))
+ (if result-function
+ (save-excursion (funcall result-function context connect-string 1 end-pos page-separator-found))
+ (with-temp-message "Formatting output..."
+ (save-excursion (sqlplus-process-command-output context connect-string 1 end-pos page-separator-found)))
+ (message "%s" cur-msg))
+ (when page-separator-found
+ (delete-region 1 (+ page-separator-found (length sqlplus-page-separator)))
+ (set-marker chunk-end-pos 1))))))
+ (set-marker chunk-begin-pos chunk-end-pos)))))
+ (goto-char (point-max))
+ (set-marker chunk-begin-pos nil)
+ (set-marker chunk-end-pos nil)
+ (set-marker prompt-found nil)))))
+
+(defadvice switch-to-buffer (around switch-to-buffer-around-advice (buffer-or-name &optional norecord))
+ ad-do-it
+ (when (and sqlplus-connect-string
+ (eq major-mode 'sqlplus-mode))
+ (let ((side-window (sqlplus-get-side-window))
+ (output-buffer (get-buffer (sqlplus-get-output-buffer-name sqlplus-connect-string))))
+ (when (and side-window
+ (not (eq (window-buffer) output-buffer)))
+ (save-selected-window
+ (switch-to-buffer-other-window output-buffer))))))
+(ad-activate 'switch-to-buffer)
+
+(defun sqlplus-kill-function ()
+ (unless sqlplus-kill-function-inhibitor
+ ;; shutdown connection if it is SQL*Plus output buffer or SQL*Plus process buffer
+ (if (or (and sqlplus-connect-string (equal (buffer-name) (sqlplus-get-output-buffer-name sqlplus-connect-string)))
+ sqlplus-process-p)
+ (sqlplus--enqueue-task 'sqlplus-shutdown (or sqlplus-connect-string sqlplus-process-p))
+ ;; input buffer or another buffer connected to SQL*Plus - possibly shutdown
+ (when sqlplus-connect-string
+ (let ((counter 0)
+ (scs sqlplus-connect-string))
+ (dolist (buffer (buffer-list))
+ (with-current-buffer buffer
+ (when (equal sqlplus-connect-string scs) (incf counter))))
+ (when (<= counter 2)
+ (let* ((process (get-process (sqlplus-get-process-name sqlplus-connect-string))))
+ (when (or (not process)
+ (memq (process-status process) '(exit signal))
+ (y-or-n-p (format "Kill SQL*Plus process %s " (car (refine-connect-string sqlplus-connect-string)))))
+ (sqlplus--enqueue-task 'sqlplus-shutdown sqlplus-connect-string)))))))))
+
+(defun sqlplus-emacs-kill-function ()
+ ;; save and kill all sqlplus-mode buffers
+ (let (buffers-to-kill)
+ (dolist (buffer (buffer-list))
+ (with-current-buffer buffer
+ (when (and sqlplus-connect-string
+ (eq major-mode 'sqlplus-mode))
+ (when (buffer-file-name)
+ (save-buffer))
+ (push buffer buffers-to-kill))))
+ (setq sqlplus-kill-function-inhibitor t)
+ (condition-case nil
+ (unwind-protect
+ (dolist (buffer buffers-to-kill)
+ (kill-buffer buffer))
+ (setq sqlplus-kill-function-inhibitor nil))
+ (error nil))
+ t))
+
+(push 'sqlplus-emacs-kill-function kill-emacs-query-functions)
+
+(add-hook 'kill-buffer-hook 'sqlplus-kill-function)
+
+;; kill all history buffers so that they can save themselves
+(add-hook 'kill-emacs-hook (lambda ()
+ (dolist (buf (copy-list (buffer-list)))
+ (when (and (string-match "@.*-hist" (buffer-name buf))
+ (with-current-buffer buf sqlplus-cs))
+ (kill-buffer buf)))))
+
+(defun sqlplus-find-output-table (interrupted)
+ "Search for table in last SQL*Plus command result, and return
+list (BEGIN END MSG) for first and last table char, or nil if
+table is not found."
+ (let (begin end)
+ (goto-char (point-min))
+ (when (re-search-forward "^[^\n]+\n\\( \\)?-" nil t)
+ (let (msg
+ (indent (when (match-string 1) -1))) ; result of 'describe' sqlplus command
+ (forward-line -1)
+ ;; (untabify (point) (buffer-size))
+ (setq begin (point))
+ (when indent
+ (indent-rigidly begin (point-max) indent)
+ (goto-char begin))
+ (if indent
+ (progn
+ (goto-char (point-max))
+ (skip-chars-backward "\n\t ")
+ (setq end (point))
+ (goto-char (point-max)))
+ (or (re-search-forward (concat "^" (regexp-quote sqlplus-repfooter) "\n[\n\t ]*") nil t)
+ (when interrupted (re-search-forward "\\'" nil t))) ; \\' means end of buffer
+ (setq end (match-beginning 0))
+ (setq msg (buffer-substring (match-end 0) (point-max))))
+ (list begin end msg)))))
+
+(defstruct col-desc
+ id ; from 0
+ name ; column name
+ start-pos ; char column number
+ end-pos ; char column number
+ max-width ; max. column width
+ preferred-width ; preferred column width
+ min-prefix-len ; min. prefix (spaces only)
+ numeric ; y if column is numeric, n if is not, nil if don't know
+ has-eol ; temporary value for processing current row
+)
+
+(defun sqlplus-previous-line ()
+ (let ((col (current-column)))
+ (forward-line -1)
+ (move-to-column col t)))
+
+(defun sqlplus-next-line ()
+ (let ((col (current-column)))
+ (forward-line 1)
+ (move-to-column col t)))
+
+(defun sqlplus--correct-column-name (max-col-no)
+ (let ((counter 0)
+ (big (1- (save-excursion (beginning-of-line) (point)))))
+ (skip-chars-forward " ")
+ (when (re-search-forward " [^ \n]" (+ big max-col-no) t)
+ (backward-char)
+ (while (< (point) (+ big max-col-no))
+ (setq counter (1+ counter))
+ (insert " ")))
+ counter))
+
+(defun sqlplus-parse-output-table (interrupted)
+ "Parse table and return list (COLUMN-INFOS ROWS MSG) where
+COLUMN-INFOS is a col-desc structures list, ROWS is a table of
+records (record is a list of strings). Return nil if table is
+not detected."
+ (let ((region (sqlplus-find-output-table interrupted)))
+ (when region
+ (let ((begin (car region))
+ (end (cadr region))
+ (last-msg (caddr region))
+ (col-counter 0)
+ column-infos rows
+ (record-lines 1)
+ finish)
+ ;; (message "'%s'\n'%s'" (buffer-substring begin end) last-msg)
+ (goto-char begin)
+ ;; we are at the first char of column name
+ ;; move to the first char of '-----' column separator
+ (beginning-of-line 2)
+ (while (not finish)
+ (if (equal (char-after) ?-)
+ ;; at the first column separator char
+ (let* ((beg (point))
+ (col-begin (current-column))
+ (col-max-width (skip-chars-forward "-"))
+ ;; after last column separator char
+ (ed (point))
+ (col-end (+ col-begin col-max-width))
+ (col-name (let* ((b (progn
+ (goto-char beg)
+ (sqlplus-previous-line)
+ (save-excursion
+ (let ((counter (sqlplus--correct-column-name (1+ col-end))))
+ (setq beg (+ beg counter))
+ (setq ed (+ ed counter))))
+ (point)))
+ (e (+ b col-max-width)))
+ (skip-chars-forward " \t")
+ (setq b (point))
+ (goto-char (min (save-excursion (end-of-line) (point)) e))
+ (skip-chars-backward " \t")
+ (setq e (point))
+ (if (> e b)
+ (buffer-substring b e)
+ "")))
+ (col-preferred-width (string-width col-name)))
+ ;; (put-text-property 0 (length col-name) 'face '(bold) col-name)
+ (push (make-col-desc :id col-counter :name col-name :start-pos col-begin
+ :end-pos col-end :max-width col-max-width :preferred-width col-preferred-width :min-prefix-len col-max-width)
+ column-infos)
+ (incf col-counter)
+ (goto-char ed)
+ (if (equal (char-after) ?\n)
+ (progn
+ (beginning-of-line 3)
+ (incf record-lines))
+ (forward-char)))
+ (setq finish t)))
+ (decf record-lines)
+ (setq column-infos (nreverse column-infos))
+ (forward-line -1)
+
+ ;; at the first char of first data cell.
+ ;; table parsing...
+ (while (< (point) end)
+ (let (record last-start-pos)
+ (dolist (column-info column-infos)
+ (let ((start-pos (col-desc-start-pos column-info))
+ (end-pos (col-desc-end-pos column-info))
+ width len value b e l)
+ (when (and last-start-pos
+ (<= start-pos last-start-pos))
+ (forward-line))
+ (setq last-start-pos start-pos)
+ (move-to-column start-pos)
+ (setq b (point))
+ (move-to-column end-pos)
+ (setq e (point))
+ (move-to-column start-pos)
+ (setq l (skip-chars-forward " " e))
+ (when (and (col-desc-min-prefix-len column-info)
+ (< l (- e b))
+ (< l (col-desc-min-prefix-len column-info)))
+ (setf (col-desc-min-prefix-len column-info)
+ (if (looking-at "[0-9]") l nil)))
+ (move-to-column end-pos)
+ (skip-chars-backward " " b)
+ (setq value (if (> (point) b) (buffer-substring b (point)) ""))
+ (setq len (length value)
+ width (string-width value))
+ (when (and sqlplus-select-result-max-col-width
+ (> len sqlplus-select-result-max-col-width))
+ (setq value (concat (substring value 0 sqlplus-select-result-max-col-width) "...")
+ len (length value)
+ width (string-width value)))
+ (when (> width (col-desc-preferred-width column-info))
+ (setf (col-desc-preferred-width column-info) width))
+ (when (and (< l (- e b))
+ (memq (col-desc-numeric column-info) '(nil y)))
+ (setf (col-desc-numeric column-info)
+ (if (string-match "\\` *[-+0-9Ee.,$]+\\'" value) 'y 'n)))
+ (push value record)))
+ (forward-line)
+ (when (> record-lines 1)
+ (forward-line))
+ (setq last-start-pos nil
+ record (nreverse record))
+ (push record rows)))
+ (setq rows (nreverse rows))
+ (list column-infos rows last-msg)))))
+
+(defun sqlplus-draw-table (lst &optional slips-count)
+ "SLIPS-COUNT (nil means compute automatically)."
+ ;; current buffer: SQL*Plus output buffer
+ (when window-system
+ (if (>= (sqlplus-color-percentage (face-background 'default)) 50)
+ (progn
+ (set-face-attribute 'sqlplus-table-head-face nil
+ :background (sqlplus-shine-color (face-background 'default) -70) :foreground (face-background 'default))
+ (set-face-attribute 'sqlplus-table-even-rows-face nil
+ :background (sqlplus-shine-color (face-background 'default) -20) :overline (face-background 'default))
+ (set-face-attribute 'sqlplus-table-odd-rows-face nil
+ :background (sqlplus-shine-color (face-background 'default) -30) :overline (face-background 'default)))
+ (set-face-attribute 'sqlplus-table-head-face nil
+ :background (sqlplus-shine-color (face-background 'default) +70) :foreground (face-background 'default))
+ (set-face-attribute 'sqlplus-table-even-rows-face nil
+ :background (sqlplus-shine-color (face-background 'default) +20) :overline (face-background 'default))
+ (set-face-attribute 'sqlplus-table-odd-rows-face nil
+ :background (sqlplus-shine-color (face-background 'default) +30) :overline (face-background 'default))))
+ (let* ((column-infos (car lst))
+ (rows (cadr lst))
+ (slip-width 0)
+ (table-header-height 1)
+ (table-area-width (1- (let ((side-window (sqlplus-get-side-window))) (if side-window (window-width side-window) (frame-width)))))
+ ;; may be nil, which means no limit
+ (table-area-height (let ((side-window (sqlplus-get-side-window)))
+ (when side-window
+ (- (window-height side-window) 2 (if mode-line-format 1 0) (if header-line-format 1 0)))))
+ (column-separator-width (if sqlplus-elegant-style 1.2 (max (length sqlplus-table-col-separator) (length sqlplus-table-col-head-separator))))
+ rows-per-slip ;; data rows per slip
+ (slip-separator-width (if sqlplus-elegant-style 1.5 sqlplus-slip-separator-width))
+ (slip-separator (make-string (max 0 (if sqlplus-elegant-style 1 sqlplus-slip-separator-width)) ?\ ))
+ (last-msg (caddr lst)))
+ (when sqlplus-elegant-style
+ (put-text-property 0 1 'display (cons 'space (list :width slip-separator-width)) slip-separator))
+ (when (<= table-area-height table-header-height)
+ (setq table-area-height nil))
+ (when (and window-system sqlplus-elegant-style table-area-height (> table-area-height 3))
+ ;; overline makes glyph higher...
+ (setq table-area-height (- table-area-height (round (/ (* 20.0 (- table-area-height 3)) (face-attribute 'default :height))))))
+ (when column-infos
+ (goto-char (point-max))
+ (beginning-of-line)
+ ;; slip width (without separator between slips)
+ (dolist (col-info column-infos)
+ (when (col-desc-min-prefix-len col-info)
+ (setf (col-desc-preferred-width col-info) (max (string-width (col-desc-name col-info))
+ (- (col-desc-preferred-width col-info) (col-desc-min-prefix-len col-info)))))
+ (incf slip-width (+ (col-desc-preferred-width col-info) column-separator-width)))
+ (when (> slip-width 0)
+ (setq slip-width (+ (- slip-width column-separator-width) (if sqlplus-elegant-style 1.0 0))))
+ ;; computing slip count if not known yet
+ (unless slips-count
+ (setq slips-count
+ (if table-area-height (min (ceiling (/ (float (length rows)) (max 1 (- table-area-height table-header-height 2))))
+ (max 1 (floor (/ (float table-area-width) (+ slip-width slip-separator-width)))))
+ 1)))
+ (setq slips-count (max 1 (min slips-count (length rows)))) ; slip count <= data rows
+ (setq rows-per-slip (ceiling (/ (float (length rows)) slips-count)))
+ (when (> rows-per-slip 0)
+ (setq slips-count (max 1 (min (ceiling (/ (float (length rows)) rows-per-slip)) slips-count))))
+
+ (let ((table-begin-point (point)))
+ (dotimes (slip-no slips-count)
+ (let ((row-no 0)
+ (slip-begin-point (point))
+ (rows-processed 0))
+ ;; column names
+ (dolist (col-info column-infos)
+ (let* ((col-name (col-desc-name col-info))
+ (spaces (max 0 (- (col-desc-preferred-width col-info) (string-width col-name))))
+ (last-col-p (>= (1+ (col-desc-id col-info)) (length column-infos)))
+ (val (format (if sqlplus-elegant-style " %s%s %s" "%s%s%s")
+ col-name
+ (make-string spaces ?\ )
+ (if last-col-p "" (if sqlplus-elegant-style " " sqlplus-table-col-separator)))))
+ (put-text-property 0 (if (or (not sqlplus-elegant-style) last-col-p) (length val) (1- (length val)))
+ 'face 'sqlplus-table-head-face val)
+ (when sqlplus-elegant-style
+ (put-text-property 0 1 'display '(space . (:width 0.5)) val)
+ (put-text-property (- (length val) (if last-col-p 1 2)) (- (length val) (if last-col-p 0 1)) 'display '(space . (:width 0.5)) val)
+ (unless last-col-p
+ (put-text-property (- (length val) 1) (length val) 'display '(space . (:width 0.2)) val)))
+ (insert val)))
+ (insert slip-separator)
+ (insert "\n")
+ ;; data rows
+ (while (and (< rows-processed rows-per-slip)
+ rows)
+ (let ((row (car rows)))
+ (setq rows (cdr rows))
+ (incf rows-processed)
+ (let ((col-infos column-infos))
+ (dolist (value row)
+ (let* ((col-info (car col-infos))
+ (numeric-p (eq (col-desc-numeric col-info) 'y))
+ (min-prefix (col-desc-min-prefix-len col-info)))
+ (when (and min-prefix
+ value
+ (>= (length value) min-prefix))
+ (setq value (substring value min-prefix)))
+ (let* ((spaces (max 0 (- (col-desc-preferred-width col-info) (string-width value))))
+ (val (if numeric-p
+ (format (if sqlplus-elegant-style " %s%s %s" "%s%s%s")
+ (make-string spaces ?\ )
+ value
+ (if (cdr col-infos) (if sqlplus-elegant-style " " sqlplus-table-col-separator) ""))
+ (format (if sqlplus-elegant-style " %s%s %s" "%s%s%s")
+ value
+ (make-string spaces ?\ )
+ (if (cdr col-infos) (if sqlplus-elegant-style " " sqlplus-table-col-separator) "")))))
+ (put-text-property 0 (if (and sqlplus-elegant-style (cdr col-infos)) (- (length val) 1) (length val))
+ 'face (if (evenp row-no)
+ 'sqlplus-table-even-rows-face
+ 'sqlplus-table-odd-rows-face) val)
+ (when sqlplus-elegant-style
+ (put-text-property 0 1 'display '(space . (:width 0.5)) val)
+ (put-text-property (- (length val) (if (cdr col-infos) 2 1))
+ (- (length val) (if (cdr col-infos) 1 0))
+ 'display '(space . (:width 0.5)) val)
+ (when (cdr col-infos)
+ (put-text-property (- (length val) 1) (length val) 'display '(space . (:width 0.2)) val)))
+ (setq col-infos (cdr col-infos))
+ (insert val))))
+ (incf row-no)
+ (insert slip-separator)
+ (insert "\n"))))
+ (when (> slip-no 0)
+ (delete-backward-char 1)
+ (let ((slip-end-point (point)))
+ (kill-rectangle slip-begin-point slip-end-point)
+ (delete-region slip-begin-point (point-max))
+ (goto-char table-begin-point)
+ (end-of-line)
+ (yank-rectangle)
+ (goto-char (point-max))
+ ))))
+ (goto-char (point-max))
+ (when (and last-msg (> (length last-msg) 0))
+ (unless sqlplus-elegant-style (insert "\n"))
+ (let ((s (format "%s\n\n" (replace-regexp-in-string "\n+" " " last-msg))))
+ (when sqlplus-elegant-style
+ (put-text-property (- (length s) 2) (1- (length s)) 'display '(space . (:height 1.5)) s))
+ (insert s)))))))
+
+(defun sqlplus-send-user-string (str)
+ (interactive (progn (sqlplus-check-connection)
+ (if sqlplus-connect-string
+ (list (read-string "Send to process: " nil 'sqlplus-user-string-history ""))
+ (error "Works only in SQL*Plus buffer"))))
+ (let ((connect-string sqlplus-connect-string))
+ (sqlplus-verify-buffer connect-string)
+ (let* ((process (get-process (sqlplus-get-process-name connect-string)))
+ (output-buffer-name (sqlplus-get-output-buffer-name connect-string)))
+ (sqlplus-echo-in-buffer output-buffer-name (concat str "\n"))
+ (send-string process (concat str "\n")))))
+
+(defun sqlplus-prepare-update-alist (table-data)
+ (let ((column-infos (car table-data))
+ (rows (cadr table-data))
+ (msg (caddr table-data))
+ alist)
+ (dolist (row rows)
+ (let* ((object-name (car row))
+ (object-type (intern (downcase (cadr row))))
+ (status (caddr row))
+ (regexp-list (cdr (assq object-type alist)))
+ (pair (cons object-name (equal status "I"))))
+ (if regexp-list
+ (setcdr regexp-list (cons pair (cdr regexp-list)))
+ (setq regexp-list (list pair))
+ (setq alist (cons (cons object-type regexp-list) alist)))))
+ alist))
+
+(defun sqlplus-my-update-handler (connect-string table-data)
+ (let ((alist (sqlplus-prepare-update-alist table-data)))
+ (when (featurep 'ide-skel)
+ (funcall 'sqlplus-side-view-update-data connect-string alist))))
+
+(defun sqlplus-my-handler (connect-string table-data)
+ (let ((alist (sqlplus-prepare-update-alist table-data))
+ (sqlplus-font-lock-regexps (sqlplus-get-font-lock-regexps connect-string)))
+ (sqlplus-set-objects-alist alist connect-string)
+ (when (featurep 'ide-skel)
+ (funcall 'sqlplus-side-view-update-data connect-string alist))
+ (clrhash sqlplus-font-lock-regexps)
+ (dolist (lst sqlplus-syntax-faces)
+ (let* ((object-type (car lst))
+ (regexp-list (append (caddr lst) (mapcar 'car (cdr (assq object-type alist))))))
+ (when regexp-list
+ (puthash object-type (concat "\\b" (regexp-opt regexp-list t) "\\b") sqlplus-font-lock-regexps))))
+ (let ((map sqlplus-font-lock-regexps))
+ (mapc (lambda (buffer)
+ (with-current-buffer buffer
+ (when (and (memq major-mode '(sqlplus-mode plsql-mode))
+ (equal sqlplus-connect-string connect-string))
+ (when font-lock-mode (font-lock-mode 1)))))
+ (buffer-list)))))
+
+(defun sqlplus-get-source-function (connect-string context string last-chunk)
+ (let* ((source-text (sqlplus-get-context-value context :source-text))
+ (source-type (sqlplus-get-context-value context :source-type))
+ (source-name (sqlplus-get-context-value context :source-name))
+ (source-extension (sqlplus-get-context-value context :source-extension))
+ (name (concat (upcase source-name) "." source-extension))
+ finish)
+ (unless (sqlplus-get-context-value context :finished)
+ (setq source-text (concat source-text string))
+ (sqlplus-set-context-value context :source-text source-text)
+ (when last-chunk
+ (if (string-match (regexp-quote sqlplus-end-of-source-sentinel) source-text)
+ (when (< (length source-text) (+ (length sqlplus-end-of-source-sentinel) 5))
+ (setq last-chunk nil
+ finish "There is no such database object"))
+ (setq last-chunk nil)))
+ (when last-chunk
+ (setq finish t))
+ (when finish
+ (sqlplus-set-context-value context :finished t)
+ (if (stringp finish)
+ (message finish)
+ (with-temp-buffer
+ (insert source-text)
+ (goto-char (point-min))
+ (re-search-forward (regexp-quote sqlplus-end-of-source-sentinel) nil t)
+ (replace-match "")
+ (goto-char (point-max))
+ (forward-comment (- (buffer-size)))
+ (when (equal source-type "TABLE")
+ (goto-char (point-min))
+ (insert (format "table %s\n(\n" source-name))
+ (goto-char (point-max))
+ (delete-region (re-search-backward "," nil t) (point-max))
+ (insert "\n);"))
+ (insert "\n/\n")
+ (unless (member source-type '("SEQUENCE" "TABLE" "SYNONYM" "INDEX"))
+ (insert "show err\n"))
+ (goto-char (point-min))
+ (insert "create " (if (member source-type '("INDEX" "SEQUENCE" "TABLE")) "" "or replace "))
+ (setq source-text (buffer-string)))
+ (with-current-buffer (get-buffer-create name)
+ (setq buffer-read-only nil)
+ (erase-buffer)
+ (insert source-text)
+ (goto-char (point-min))
+ (set-visited-file-name (concat (file-name-as-directory temporary-file-directory)
+ (concat (make-temp-name (sqlplus-canonize-file-name (concat (upcase source-name) "_") "[$]")) "." source-extension)))
+ (rename-buffer name)
+ (condition-case err
+ (funcall (symbol-function 'plsql-mode))
+ (error nil))
+ (setq sqlplus-connect-string connect-string
+ buffer-read-only sqlplus-source-buffer-readonly-by-default-flag)
+ (save-buffer)
+ (save-selected-window
+ (let ((win (selected-window)))
+ (when (or (equal win (sqlplus-get-side-window))
+ (and (fboundp 'ide-skel-side-view-window-p)
+ (funcall 'ide-skel-side-view-window-p win)))
+ (setq win (sqlplus-get-workbench-window)))
+ (set-window-buffer win (current-buffer))))))))))
+
+(defun sqlplus-get-source (connect-string name type &optional schema-name)
+ "Fetch source for database object NAME in current or specified SCHEMA-NAME, and show the source in new buffer.
+Possible TYPE values are in 'sqlplus-object-types'."
+ (interactive (let* ((thing (thing-at-point 'symbol))
+ (obj-raw-name (read-string (concat "Object name" (if thing (concat " [default " thing "]") "") ": ")
+ nil
+ 'sqlplus-get-source-history (when thing thing)))
+ (completion-ignore-case t)
+ (type (completing-read "Object type: " (mapcar (lambda (type) (cons type nil)) sqlplus-object-types) nil t)))
+ (string-match "^\\(\\([^.]+\\)[.]\\)?\\(.*\\)$" obj-raw-name)
+ (list sqlplus-connect-string (match-string 3 obj-raw-name) type (match-string 2 obj-raw-name))))
+ (setq type (upcase type))
+ (let* ((sql
+ (cond ((equal type "SEQUENCE")
+ (format (concat "select 'sequence %s' || sequence_name || "
+ "decode( increment_by, 1, '', ' increment by ' || increment_by ) || "
+ "case when increment_by > 0 and max_value >= (1.0000E+27)-1 or increment_by < 0 and max_value = -1 then '' "
+ "else decode( max_value, null, ' nomaxvalue', ' maxvalue ' || max_value) end || "
+ "case when increment_by > 0 and min_value = 1 or increment_by < 0 and min_value <= (-1.0000E+26)+1 then '' "
+ "else decode( min_value, null, ' nominvalue', ' minvalue ' || min_value) end || "
+ "decode( cycle_flag, 'Y', ' cycle', '' ) || "
+ "decode( cache_size, 20, '', 0, ' nocache', ' cache ' || cache_size ) || "
+ "decode( order_flag, 'Y', ' order', '' ) "
+ "from %s where sequence_name = '%s'%s;")
+ (if schema-name (concat (upcase schema-name) ".") "")
+ (if schema-name "all_sequences" "user_sequences")
+ (upcase name)
+ (if schema-name (format " and sequence_owner = '%s'" (upcase schema-name)) "")))
+ ((equal type "TABLE")
+ (format (concat "select ' ' || column_name || ' ' || data_type || "
+ "decode( data_type,"
+ " 'VARCHAR2', '(' || to_char( data_length, 'fm9999' ) || ')',"
+ " 'NUMBER', decode( data_precision,"
+ " null, '',"
+ " '(' || to_char( data_precision, 'fm9999' ) || decode( data_scale,"
+ " null, '',"
+ " 0, '',"
+ " ',' || data_scale ) || ')' ),"
+ " '') || "
+ "decode( nullable, 'Y', ' not null', '') || ','"
+ "from all_tab_columns "
+ "where owner = %s and table_name = '%s' "
+ "order by column_id;")
+ (if schema-name (concat "'" (upcase schema-name) "'") "user")
+ (upcase name)))
+ ((equal type "SYNONYM")
+ (format (concat "select "
+ "decode( owner, 'PUBLIC', 'public ', '' ) || 'synonym ' || "
+ "decode( owner, 'PUBLIC', '', user, '', owner || '.' ) || synonym_name || ' for ' || "
+ "decode( table_owner, user, '', table_owner || '.' ) || table_name || "
+ "decode( db_link, null, '', '@' || db_link ) "
+ "from all_synonyms where (owner = 'PUBLIC' or owner = %s) and synonym_name = '%s';")
+ (if schema-name (concat "'" (upcase schema-name) "'") "user")
+ (upcase name)))
+ ((equal type "VIEW")
+ (if schema-name (format "select 'view %s.' || view_name || ' as ', text from all_views where owner = '%s' and view_name = '%s';"
+ (upcase schema-name) (upcase schema-name) (upcase name))
+ (format "select 'view ' || view_name || ' as ', text from user_views where view_name = '%s';" (upcase name))))
+ ((or (equal type "PROCEDURE")
+ (equal type "FUNCTION"))
+ (if schema-name (format "select text from all_source where owner = '%s' and name = '%s' and type in ('PROCEDURE', 'FUNCTION') order by line;"
+ (upcase schema-name) (upcase name))
+ (format "select text from user_source where name = '%s' and type in ('PROCEDURE', 'FUNCTION') order by line;"
+ (upcase name))))
+ (t
+ (if schema-name (format "select text from all_source where owner = '%s' and name = '%s' and type = '%s' order by line;"
+ (upcase schema-name) (upcase name) (upcase type))
+ (format "select text from user_source where name = '%s' and type = '%s' order by line;"
+ (upcase name) (upcase type))))))
+ (prolog-commands (list "set echo off"
+ "set newpage 0"
+ "set space 0"
+ "set pagesize 0"
+ "set feedback off"
+ "set long 4000"
+ "set longchunksize 4000"
+ "set wrap on"
+ "set heading off"
+ "set trimspool on"
+ "set linesize 4000"
+ "set timing off"))
+ (extension (if (equal (downcase type) "package") "pks" "sql"))
+ (source-buffer-name (concat " " (upcase name) "." extension))
+ (context-options (list (cons :dont-parse-result 'dont-parse)
+ (cons :source-text nil)
+ (cons :source-type type)
+ (cons :source-name name)
+ (cons :source-extension extension)
+ (cons :result-function 'sqlplus-get-source-function))))
+ (sqlplus-execute connect-string sql context-options prolog-commands t t)
+ (sqlplus-execute connect-string (format "select '%s' from dual;" sqlplus-end-of-source-sentinel) context-options prolog-commands t t)))
+
+(defun sqlplus-canonize-file-name (file-name regexp)
+ (while (string-match regexp file-name)
+ (setq file-name (replace-match "!" nil t file-name)))
+ file-name)
+
+(defun sqlplus-define-user-variables (string)
+ (when string
+ (let (variables-list
+ define-commands
+ (index 0))
+ (while (setq index (string-match "&+\\(\\(\\sw\\|\\s_\\)+\\)" string index))
+ (let ((var-name (match-string 1 string)))
+ (setq index (+ 2 index))
+ (unless (member var-name variables-list)
+ (push var-name variables-list))))
+ (dolist (var-name (reverse variables-list))
+ (let* ((default-value (gethash var-name sqlplus-user-variables nil))
+ (value (read-string (format (concat "Variable value for %s" (if default-value (format " [default: %s]" default-value) "") ": ") var-name)
+ nil 'sqlplus-user-variables-history default-value)))
+ (unless value
+ (error "There is no value for %s defined" var-name))
+ (setq define-commands (cons (format "define %s=%s" var-name value) define-commands))
+ (puthash var-name value sqlplus-user-variables)))
+ define-commands)))
+
+(defun sqlplus-parse-region (start end)
+ (let ((sql (buffer-substring start end)))
+ (save-excursion
+ ;; Strip whitespace from beginning and end, just to be neat.
+ (if (string-match "\\`[ \t\n]+" sql)
+ (setq sql (substring sql (match-end 0))))
+ (if (string-match "[ \t\n]+\\'" sql)
+ (setq sql (substring sql 0 (match-beginning 0))))
+ (setq sql (replace-regexp-in-string "^[ \t]*--.*[\n]?" "" sql))
+ (when (zerop (length sql))
+ (error "Nothing to send"))
+ ;; Now the string should end with an sqlplus-terminator.
+ (if (not (string-match "\\(;\\|/\\|[.]\\)\\'" sql))
+ (setq sql (concat sql ";"))))
+ sql))
+
+(defun sqlplus-show-html-fun (context connect-string begin end interrupted)
+ (let ((output-file (expand-file-name (substitute-in-file-name sqlplus-html-output-file-name)))
+ (sql (sqlplus-get-context-value context :htmlized-html-command))
+ (html (buffer-substring begin end))
+ (header-html (eval sqlplus-html-output-header)))
+ (let ((case-fold-search t))
+ (while (and (string-match "\\`[ \t\n]*\\(<br>\\|<p>\\)?" html) (match-string 0 html) (> (length (match-string 0 html)) 0))
+ (setq html (replace-match "" nil t html)))
+ (when (> (length html) 0)
+ (sqlplus-execute connect-string "" nil '("set markup html off") 'no-echo 'dont-show-output-buffer)
+ (find-file output-file)
+ (erase-buffer)
+ (insert (concat "<html>\n"
+ "<head>\n"
+ " <meta http-equiv=\"content-type\" content=\"text/html; charset=" sqlplus-html-output-encoding "\">\n"
+ (sqlplus-get-context-value context :head) "\n"
+ "</head>\n"
+ "<body " (sqlplus-get-context-value context :body) ">\n"
+ (if header-html header-html "")
+ (if sqlplus-html-output-sql sql "")
+ "<p>"
+ html "\n"
+ "</body>\n"
+ "</html>"))
+ (goto-char (point-min))
+ (save-buffer)))))
+
+(defun sqlplus-refine-html (html remove-entities)
+ (string-match "\\`\"?\\(\\(.\\|\n\\)*?\\)\"?[ \t\n]*\\'" html)
+ (setq html (match-string 1 html))
+ (if remove-entities
+ (progn
+ (while (string-match "&quot;" html) (setq html (replace-match "\"" nil t html)))
+ (while (string-match "&lt;" html) (setq html (replace-match "<" nil t html)))
+ (while (string-match "&gt;" html) (setq html (replace-match ">" nil t html)))
+ (while (string-match "&amp;" html) (setq html (replace-match "&" nil t html))))
+ (while (string-match "&" html) (setq html (replace-match "&amp;" nil t html)))
+ (while (string-match ">" html) (setq html (replace-match "&gt;" nil t html)))
+ (while (string-match "<" html) (setq html (replace-match "&lt;" nil t html)))
+ (while (string-match "\"" html) (setq html (replace-match "&quot;" nil t html))))
+ (string-match "\\`\"?\\(\\(.\\|\n\\)*?\\)\"?[ \t\n]*\\'" html)
+ (setq html (match-string 1 html))
+ html)
+
+(defun sqlplus-show-markup-fun (context connect-string begin end interrupted)
+ (goto-char begin)
+ (let ((head "")
+ (body "")
+ preformat)
+ (when (re-search-forward (concat "\\bHEAD\\b[ \t\n]*\\(\\(.\\|\n\\)*\\)[ \t\n]*"
+ "\\bBODY\\b[ \t\n]*\\(\\(.\\|\n\\)*\\)[ \t\n]*"
+ "\\bTABLE\\b\\(.\\|\n\\)*PREFORMAT[ \t\n]+\\(ON\\|OFF\\)\\b") nil t)
+ (setq head (match-string 1)
+ body (match-string 3)
+ preformat (string= (downcase (match-string 6)) "on"))
+ (setq head (sqlplus-refine-html head t)
+ body (sqlplus-refine-html body t))
+ (let ((context-options (list (cons :result-function 'sqlplus-show-html-fun)
+ (cons :current-command-input-buffer-name (sqlplus-get-context-value context :current-command-input-buffer-name))
+ (cons :html-command (sqlplus-get-context-value context :html-command))
+ (cons :htmlized-html-command (sqlplus-get-context-value context :htmlized-html-command))
+ (cons :head head)
+ (cons :body body)))
+ (prolog-commands (list "set wrap on"
+ (format "set linesize %S" (if preformat (1- (frame-width)) 4000))
+ "set pagesize 50000"
+ "btitle off"
+ "repfooter off"
+ "set markup html on")))
+ (sqlplus-execute connect-string (sqlplus-get-context-value context :html-command) context-options prolog-commands 'no-echo 'dont-show-output-buffer)))))
+
+(defun sqlplus-htmlize (begin end)
+ (let (result)
+ (when (featurep 'htmlize)
+ (let* ((htmlize-output-type 'font)
+ (buffer (funcall (symbol-function 'htmlize-region) begin end)))
+ (with-current-buffer buffer
+ (goto-char 1)
+ (re-search-forward "<pre>[ \t\n]*\\(\\(.\\|\n\\)*?\\)[ \t\n]*</pre>" nil t)
+ (setq result (concat "<pre>" (match-string 1) "</pre>")))
+ (kill-buffer buffer)))
+ (unless result
+ (setq result (sqlplus-refine-html (buffer-substring begin end) nil)))
+ result))
+
+(defun sqlplus--send (connect-string sql &optional arg no-echo html start end)
+ (if html
+ (let* ((context-options (list (cons :result-function 'sqlplus-show-markup-fun)
+ (cons :current-command-input-buffer-name (buffer-name))
+ (cons :html-command sql)
+ (cons :htmlized-html-command (if (and (eq sqlplus-html-output-sql 'elegant) (featurep 'htmlize))
+ (sqlplus-htmlize start end)
+ (sqlplus-refine-html sql nil))))))
+ (sqlplus-execute connect-string "show markup\n" context-options nil 'no-echo 'dont-show-output-buffer))
+ (let* ((no-parse (consp arg))
+ (context-options (list (cons :dont-parse-result (consp arg))
+ (cons :columns-count (if (integerp arg)
+ (if (zerop arg) nil arg)
+ (if sqlplus-multi-output-tables-default-flag nil 1)))
+ (cons :current-command-input-buffer-name (buffer-name))))
+ (prolog-commands (list (format "set wrap %s" (if no-parse "on" sqlplus-default-wrap))
+ (format "set linesize %s" (if (consp arg) (1- (frame-width)) 4000))
+ (format "set pagesize %S" (if no-parse 50000 sqlplus-pagesize))
+ (format "btitle %s"
+ (if no-parse "off" (concat "left '" sqlplus-page-separator "'")))
+ (format "repfooter %s"
+ (if no-parse "off" (concat "left '" sqlplus-repfooter "'"))))))
+ (sqlplus-execute connect-string sql context-options prolog-commands no-echo))))
+
+(defun sqlplus-explain ()
+ (interactive)
+ (sqlplus-check-connection)
+ (when (buffer-file-name)
+ (condition-case err
+ (save-buffer)
+ (error (message (error-message-string err)))))
+ (let* ((region (sqlplus-mark-current)))
+ (setq sqlplus-region-beginning-pos (car region)
+ sqlplus-region-end-pos (cdr region))
+ (if (and sqlplus-region-beginning-pos sqlplus-region-end-pos)
+ (let ((sql (sqlplus-parse-region (car region) (cdr region)))
+ (case-fold-search t))
+ (if (string-match "^[\n\t ]*explain[\n\t ]+plan[\t\t ]+for\\>" sql)
+ (sqlplus--send sqlplus-connect-string sql nil nil nil)
+ (setq sql (concat (sqlplus-fontify-string sqlplus-connect-string "explain plan for ") sql))
+ (sqlplus--send sqlplus-connect-string sql nil nil nil)))
+ (error "Point doesn't indicate any command to execute"))))
+
+(defun sqlplus-send-region (arg start end &optional no-echo html)
+ "Send a region to the SQL*Plus process."
+ (interactive "P\nr")
+ (sqlplus-check-connection)
+ (sqlplus--send sqlplus-connect-string (sqlplus-parse-region start end) arg no-echo html start end))
+
+(defun sqlplus-user-command (connect-string sql result-proc)
+ (let* ((context-options (list (cons :user-function result-proc)
+ (cons :columns-count 1)))
+ (prolog-commands (list (format "set wrap %s" sqlplus-default-wrap)
+ "set linesize 4000"
+ "set timing off"
+ "set pagesize 50000"
+ "btitle off"
+ (format "repfooter %s" (concat "left '" sqlplus-repfooter "'")))))
+ (sqlplus-execute connect-string sql context-options prolog-commands 'no-echo 'dont-show-output-buffer)))
+
+
+(defun sqlplus-hidden-select (connect-string sql result-proc)
+ (let* ((context-options (list (cons :result-table-function result-proc)
+ (cons :columns-count 1)))
+ (prolog-commands (list (format "set wrap %s" sqlplus-default-wrap)
+ "set linesize 4000"
+ "set pagesize 50000"
+ "btitle off"
+ (format "repfooter %s" (concat "left '" sqlplus-repfooter "'")))))
+ (sqlplus-execute connect-string sql context-options prolog-commands 'no-echo 'dont-show-output-buffer)))
+
+;; "appi[nfo]" -> '("appinfo" "appi")
+(defun sqlplus-full-forms (name)
+ (if (string-match "\\`\\([^[]*\\)?\\[\\([^]]+\\)\\]\\([^]]*\\)?\\'" name)
+ (list (replace-match "\\1\\2\\3" t nil name)
+ (replace-match "\\1\\3" t nil name))
+ (list name)))
+
+(defun sqlplus-get-canonical-command-name (name)
+ (let ((association (assoc (downcase name) sqlplus-system-variables)))
+ (if association (cdr association) name)))
+
+
+(defun sqlplus-execute (connect-string sql context-options prolog-commands &optional no-echo dont-show-output-buffer)
+ (sqlplus-verify-buffer connect-string)
+ (let* ((process-buffer-name (sqlplus-get-process-buffer-name connect-string))
+ (process-buffer (get-buffer process-buffer-name))
+ (output-buffer-name (sqlplus-get-output-buffer-name connect-string))
+ (echo-prolog (concat "\n" sqlplus-output-separator " " (current-time-string) "\n\n"))
+ (process (get-buffer-process process-buffer-name))
+ set-prolog-commands commands command-no
+ (history-buffer (sqlplus-get-history-buffer connect-string))
+ (defines (sqlplus-define-user-variables sql)))
+ (setq prolog-commands (append (sqlplus-initial-strings) prolog-commands))
+ (when process-buffer
+ (with-current-buffer process-buffer
+ (setq command-no sqlplus-command-seq)
+ (incf sqlplus-command-seq)
+ (setq context-options (append (list (cons :id command-no) (cons :sql sql)) (copy-list context-options)))
+ (setq sqlplus-command-contexts (reverse (cons context-options (reverse sqlplus-command-contexts))))))
+ ;; move all "set" commands from prolog-commands to set-prolog-commands
+ (setq prolog-commands (delq nil (mapcar (lambda (command) (if (string-match "^\\s-*[sS][eE][tT]\\s-+" command)
+ (progn
+ (setq set-prolog-commands
+ (append set-prolog-commands
+ (list (substring command (length (match-string 0 command))))))
+ nil)
+ command))
+ prolog-commands)))
+ ;; remove duplicates commands from prolog-commands (last entries win)
+ (let (spc-alist)
+ (dolist (command prolog-commands)
+ (let* ((name (progn (string-match "^\\S-+" command) (downcase (match-string 0 command))))
+ (association (assoc name spc-alist)))
+ (if (and association (not (equal name "define")))
+ (setcdr association command)
+ (setq spc-alist (cons (cons name command) spc-alist)))))
+ (setq prolog-commands (mapcar (lambda (pair) (cdr pair)) (reverse spc-alist))))
+
+ (setq prolog-commands (append prolog-commands defines))
+ (setq set-prolog-commands (append (list (format "sqlprompt '%s%S%s'" sqlplus-prompt-prefix command-no sqlplus-prompt-suffix)) set-prolog-commands))
+
+ ;; remove duplicates from set-prolog-commands (last entries win)
+ (let (spc-alist)
+ (dolist (set-command set-prolog-commands)
+ (let* ((name (progn (string-match "^\\S-+" set-command) (downcase (sqlplus-get-canonical-command-name (match-string 0 set-command)))))
+ (association (assoc name spc-alist)))
+ (if association
+ (setcdr association set-command)
+ (setq spc-alist (cons (cons name set-command) spc-alist)))))
+ (setq set-prolog-commands (mapcar (lambda (pair) (cdr pair)) (reverse spc-alist))))
+
+ (setq commands (concat (mapconcat 'identity (append
+ (list (concat "set " (mapconcat 'identity set-prolog-commands " ")))
+ prolog-commands
+ (list sql)) "\n")
+ "\n"))
+ (when history-buffer
+ (with-current-buffer history-buffer
+ (goto-char (point-max))
+ (insert echo-prolog)
+ (insert (concat commands "\n"))))
+ (let ((saved-window (cons (selected-window) (window-buffer (selected-window))))
+ (input-buffer (get-buffer (sqlplus-get-input-buffer-name connect-string))))
+ (unless no-echo
+ (sqlplus-echo-in-buffer output-buffer-name echo-prolog)
+ (let ((old-suppress-show-output-buffer sqlplus-suppress-show-output-buffer))
+ (unwind-protect
+ (save-selected-window
+ (setq sqlplus-suppress-show-output-buffer dont-show-output-buffer)
+ (when (and output-buffer-name
+ (get-buffer output-buffer-name))
+ (with-current-buffer (get-buffer output-buffer-name)
+ (sqlplus-buffer-bottom connect-string)
+ (sqlplus-buffer-mark-current connect-string))))
+ (setq sqlplus-suppress-show-output-buffer old-suppress-show-output-buffer)))
+ (sqlplus-echo-in-buffer output-buffer-name (concat sql "\n\n") nil t)
+ (save-selected-window
+ (unless dont-show-output-buffer
+ (when (and output-buffer-name
+ (get-buffer output-buffer-name))
+ (with-current-buffer (get-buffer output-buffer-name)
+ (sqlplus-buffer-redisplay-current connect-string))))))
+ (if (window-live-p (car saved-window))
+ (select-window (car saved-window))
+ (if (get-buffer-window (cdr saved-window))
+ (select-window (get-buffer-window (cdr saved-window)))
+ (when (and input-buffer
+ (get-buffer-window input-buffer))
+ (select-window (get-buffer-window input-buffer))))))
+ (send-string process commands)))
+
+(defun sqlplus-fontify-string (connect-string string)
+ (let* ((input-buffer-name (sqlplus-get-input-buffer-name connect-string))
+ (input-buffer (when input-buffer-name (get-buffer input-buffer-name)))
+ (result string))
+ (when (and input-buffer (buffer-live-p input-buffer))
+ (with-current-buffer input-buffer
+ (save-excursion
+ (goto-char (point-max))
+ (let ((pos (point)))
+ (insert "\n\n")
+ (insert string)
+ (font-lock-fontify-block (+ (count "\n" string) 2))
+ (setq result (buffer-substring (+ pos 2) (point-max)))
+ (delete-region pos (point-max))))))
+ result))
+
+(defvar plsql-mark-backward-list nil)
+
+(unless plsql-mode-map
+ (setq plsql-mode-map (copy-keymap sql-mode-map))
+ (define-key plsql-mode-map "\M-." 'sqlplus-file-get-source)
+ (define-key plsql-mode-map [C-down-mouse-1] 'sqlplus-mouse-select-identifier)
+ (define-key plsql-mode-map [C-mouse-1] 'sqlplus-file-get-source-mouse)
+ (define-key plsql-mode-map "\C-c\C-g" 'plsql-begin)
+ (define-key plsql-mode-map "\C-c\C-q" 'plsql-loop)
+ (define-key plsql-mode-map "\C-c\C-z" 'plsql-if)
+ (define-key plsql-mode-map "\C-c\C-c" 'plsql-compile)
+ (define-key plsql-mode-map [tool-bar plsql-prev-mark]
+ (list 'menu-item "Previous mark" 'plsql-prev-mark
+ :image plsql-prev-mark-image
+ :enable 'plsql-mark-backward-list)))
+
+(defvar plsql-continue-anyway nil
+ "Local in input buffer (plsql-mode).")
+(make-variable-buffer-local 'plsql-continue-anyway)
+
+(defun sqlplus-switch-to-buffer (buffer-or-path &optional line-no)
+ (if (fboundp 'ide-skel-select-buffer)
+ (funcall 'ide-skel-select-buffer buffer-or-path line-no)
+ (let ((buffer (or (and (bufferp buffer-or-path) buffer-or-path)
+ (find-file-noselect buffer-or-path))))
+ (switch-to-buffer buffer)
+ (goto-line line-no))))
+
+(defun plsql-prev-mark ()
+ (interactive)
+ (let (finish)
+ (while (and plsql-mark-backward-list
+ (not finish))
+ (let* ((marker (pop plsql-mark-backward-list))
+ (buffer (marker-buffer marker))
+ (point (marker-position marker)))
+ (set-marker marker nil)
+ (when (and buffer
+ (or (not (eq (current-buffer) buffer))
+ (not (eql (point) point))))
+ (sqlplus-switch-to-buffer buffer)
+ (goto-char point)
+ (setq finish t))))
+ ;; (message "BACK: %S -- FORWARD: %S" plsql-mark-backward-list plsql-mark-forward-list)
+ (force-mode-line-update)
+ (sit-for 0)))
+
+(defun sqlplus-mouse-select-identifier (event)
+ (interactive "@e")
+ (with-selected-window (posn-window (event-start event))
+ (save-excursion
+ (let* ((point (posn-point (event-start event)))
+ (identifier (progn (goto-char point) (thing-at-point 'symbol)))
+ (ident-regexp (when identifier (regexp-quote identifier))))
+ (push (point-marker) plsql-mark-backward-list)
+ (when ident-regexp
+ (save-excursion
+ (while (not (looking-at ident-regexp))
+ (backward-char))
+ (sqlplus-mouse-set-selection (current-buffer) (point) (+ (point) (length identifier)) 'highlight)))))))
+
+(defun sqlplus-file-get-source-mouse (event)
+ (interactive "@e")
+ (let (ident)
+ (with-selected-window (posn-window (event-start event))
+ (save-excursion
+ (goto-char (posn-point (event-start event)))
+ (setq ident (thing-at-point 'symbol))))
+ (sqlplus-file-get-source sqlplus-connect-string ident nil)
+ (sit-for 0)))
+
+(defun plsql-compile (&optional arg)
+ "Save buffer and send its content to SQL*Plus.
+You must enter connect-string if buffer is disconnected; with
+argument you can change connect-string even for connected
+buffer."
+ (interactive "P")
+ (let (aborted
+ exists-show-error-command
+ (case-fold-search t))
+ (save-window-excursion
+ (save-excursion
+ ;; ask for "/" and "show err" if absent
+ (let ((old-point (point))
+ show-err-needed
+ exists-run-command best-point finish)
+ (goto-char (point-min))
+ (setq show-err-needed (let ((case-fold-search t))
+ (re-search-forward "create\\([ \t\n]+or[ \t\n]+replace\\)?[ \t\n]+\\(package\\|procedure\\|function\\|trigger\\|view\\|type\\)" nil t)))
+ (goto-char (point-max))
+ (forward-comment (- (buffer-size)))
+ (re-search-backward "^\\s-*show\\s-+err" nil t)
+ (forward-comment (- (buffer-size)))
+ (condition-case nil (forward-char) (error nil))
+ (setq best-point (point))
+ (goto-char (point-min))
+ (setq exists-run-command (re-search-forward "^\\s-*/[^*]" nil t))
+ (goto-char (point-min))
+ (setq exists-show-error-command (or (not show-err-needed) (re-search-forward "^\\s-*show\\s-+err" nil t)))
+ (while (and (not plsql-continue-anyway) (or (not exists-run-command) (not exists-show-error-command)) (not finish))
+ (goto-char best-point)
+ (let ((c (read-char
+ (format "Cannot find %s. (I)nsert it at point, (A)bort, (C)ontinue anyway"
+ (concat (unless exists-run-command "\"/\"")
+ (unless (or exists-run-command exists-show-error-command) " and ")
+ (unless exists-show-error-command "\"show err\""))))))
+ (cond ((memq c '(?i ?I))
+ (unless exists-run-command (insert "/\n"))
+ (unless exists-show-error-command (insert "show err\n"))
+ (setq finish t))
+ ((memq c '(?a ?A))
+ (setq aborted t
+ finish t))
+ ((memq c '(?c ?C))
+ (setq plsql-continue-anyway t)
+ (setq finish t))))))))
+ (unless aborted
+ (save-buffer)
+ (let* ((buffer (current-buffer))
+ (input-buffer-name (buffer-name))
+ (file-path (sqlplus-file-truename (buffer-file-name)))
+ (compilation-buffer (get-buffer sqlplus-plsql-compilation-results-buffer-name))
+ (context-options (list (cons :last-compiled-file-path file-path)
+ (cons :current-command-input-buffer-name input-buffer-name)
+ (cons :compilation-expected exists-show-error-command)))
+ (prolog-commands (list (format "set wrap %s" sqlplus-default-wrap)
+ "set linesize 4000"
+ (format "set pagesize %S" sqlplus-pagesize)
+ (format "btitle %s" (concat "left '" sqlplus-page-separator "'"))
+ (format "repfooter %s" (concat "left '" sqlplus-repfooter "'")))))
+ (when (or (not sqlplus-connect-string)
+ arg)
+ (setq sqlplus-connect-string (car (sqlplus-read-connect-string nil (caar (sqlplus-divide-connect-strings))))))
+ (sqlplus sqlplus-connect-string nil (when plsql-auto-parse-errors-flag 'dont-show-output-buffer))
+ (set-buffer buffer)
+ (force-mode-line-update)
+ (when font-lock-mode (font-lock-mode 1))
+ (when compilation-buffer
+ (with-current-buffer compilation-buffer
+ (let ((inhibit-read-only t))
+ (erase-buffer))))
+ (setq prolog-commands (append prolog-commands (sqlplus-define-user-variables (buffer-string))))
+ (sqlplus-execute sqlplus-connect-string (concat "@" file-path) context-options prolog-commands nil exists-show-error-command)))))
+
+(defun plsql-parse-errors (last-compiled-file-path)
+ (let ((file-name (file-name-nondirectory last-compiled-file-path))
+ error-list)
+ (put-text-property 0 (length file-name) 'face 'font-lock-warning-face file-name)
+ (save-excursion
+ (when (re-search-forward "^LINE/COL\\>" nil t)
+ (beginning-of-line 3)
+ (while (re-search-forward "^\\([0-9]+\\)/\\([0-9]+\\)\\s-*\\(\\(.\\|\n\\)*?\\)[\r\t ]*\n\\([\r\t ]*\\(\n\\|\\'\\)\\|[0-9]+\\)" nil t)
+ (let ((line-no (match-string 1))
+ (column-no (match-string 2))
+ (errmsg (match-string 3))
+ label)
+ (goto-char (match-beginning 5))
+ (while (string-match "\\s-\\s-+" errmsg)
+ (setq errmsg (replace-match " " nil t errmsg)))
+ (put-text-property 0 (length line-no) 'face 'font-lock-variable-name-face line-no)
+ (put-text-property 0 (length column-no) 'face 'font-lock-variable-name-face column-no)
+ (setq label (concat file-name ":" line-no ":" column-no ": " errmsg))
+ (put-text-property 0 (length label) 'mouse-face 'highlight label)
+ (push label error-list)))))
+ (save-excursion
+ (while (re-search-forward "\\s-\\([0-9]+\\):\n\\(ORA-[0-9]+[^\n]*\\)\n" nil t)
+ (let ((line-no (match-string 1))
+ (errmsg (match-string 2))
+ label)
+ (put-text-property 0 (length line-no) 'face 'font-lock-variable-name-face line-no)
+ (setq label (concat file-name ":" line-no ": " errmsg))
+ (put-text-property 0 (length label) 'mouse-face 'highlight label)
+ (push label error-list))))
+ (save-excursion
+ (while (re-search-forward "\\(\\(SP2\\|CPY\\)-[0-9]+:[^\n]*\\)\n" nil t)
+ (let ((errmsg (match-string 1))
+ label)
+ (setq label (concat file-name ":" errmsg))
+ (put-text-property 0 (length label) 'mouse-face 'highlight label)
+ (push label error-list))))
+ error-list))
+
+(defun plsql-display-errors (dir error-list)
+ (let ((buffer (get-buffer-create sqlplus-plsql-compilation-results-buffer-name)))
+ (save-selected-window
+ (save-excursion
+ (set-buffer buffer)
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (setq default-directory dir)
+ (insert (format "cd %s\n" default-directory))
+ (insert (format "Compilation results\n"))
+ (compilation-minor-mode 1)
+ (dolist (msg (reverse error-list))
+ (insert msg)
+ (insert "\n"))
+ (insert (format "\n(%s errors)\n" (length error-list))))
+ (when (and error-list (fboundp 'compile-reinitialize-errors) (funcall (symbol-function 'compile-reinitialize-errors) t)))
+ (switch-to-buffer-other-window buffer)
+ (goto-line 1)
+ (goto-line 3)))))
+
+
+(defun sqlplus-file-truename (file-name)
+ (if file-name
+ (file-truename file-name)
+ file-name))
+
+(defun sqlplus--hidden-buffer-name-p (buffer-name)
+ (equal (elt buffer-name 0) 32))
+
+(defun sqlplus-get-workbench-window ()
+ "Return upper left window"
+ (if (fboundp 'ide-get-workbench-window)
+ (funcall (symbol-function 'ide-get-workbench-window))
+ (let (best-window)
+ (dolist (win (copy-list (window-list nil 1)))
+ (when (not (sqlplus--hidden-buffer-name-p (buffer-name (window-buffer win))))
+ (if (null best-window)
+ (setq best-window win)
+ (let* ((best-window-coords (window-edges best-window))
+ (win-coords (window-edges win)))
+ (when (or (< (cadr win-coords) (cadr best-window-coords))
+ (and (= (cadr win-coords) (cadr best-window-coords))
+ (< (car win-coords) (car best-window-coords))))
+ (setq best-window win))))))
+ ;; (message "BEST-WINDOW: %S" best-window)
+ best-window)))
+
+(defun sqlplus-get-side-window ()
+ "Return bottom helper window, or nil if not found"
+ (if (fboundp 'ide-get-side-window)
+ (funcall (symbol-function 'ide-get-side-window))
+ (let* ((workbench-window (sqlplus-get-workbench-window))
+ best-window)
+ (dolist (win (copy-list (window-list nil 1)))
+ (when (and (not (sqlplus--hidden-buffer-name-p (buffer-name (window-buffer win))))
+ (not (eq win workbench-window)))
+ (if (null best-window)
+ (setq best-window win)
+ (when (> (cadr (window-edges win)) (cadr (window-edges best-window)))
+ (setq best-window win)))))
+ best-window)))
+
+(defvar sqlplus--idle-tasks nil)
+
+(defun sqlplus--enqueue-task (fun &rest params)
+ (setq sqlplus--idle-tasks (reverse (cons (cons fun params) (reverse sqlplus--idle-tasks)))))
+
+(defun sqlplus--execute-tasks ()
+ (dolist (task sqlplus--idle-tasks)
+ (let ((fun (car task))
+ (params (cdr task)))
+ (condition-case var
+ (apply fun params)
+ (error (message (error-message-string var))))))
+ (setq sqlplus--idle-tasks nil))
+
+(add-hook 'post-command-hook 'sqlplus--execute-tasks)
+
+(defvar sqlplus-mouse-selection nil)
+
+(defun sqlplus-mouse-set-selection (buffer begin end mouse-face)
+ (interactive "@e")
+ (let ((old-buffer-modified-p (buffer-modified-p)))
+ (when (buffer-live-p buffer)
+ (with-current-buffer buffer
+ (unwind-protect
+ (put-text-property begin end 'mouse-face mouse-face)
+ (set-buffer-modified-p old-buffer-modified-p)
+ (setq sqlplus-mouse-selection (when mouse-face (list buffer begin end))))))))
+
+(defun sqlplus-clear-mouse-selection ()
+ (when (and sqlplus-mouse-selection
+ (eq (event-basic-type last-input-event) 'mouse-1)
+ (not (memq 'down (event-modifiers last-input-event))))
+ (sqlplus-mouse-set-selection (car sqlplus-mouse-selection) (cadr sqlplus-mouse-selection) (caddr sqlplus-mouse-selection) nil)))
+
+(add-hook 'plsql-mode-hook
+ (lambda ()
+ (modify-syntax-entry ?. "." sql-mode-syntax-table)
+ (setq sqlplus-font-lock-keywords-1 (sqlplus-set-font-lock-emacs-structures-for-level 1 major-mode))
+ (setq sqlplus-font-lock-keywords-2 (sqlplus-set-font-lock-emacs-structures-for-level 2 major-mode))
+ (setq sqlplus-font-lock-keywords-3 (sqlplus-set-font-lock-emacs-structures-for-level 3 major-mode))
+ (setq font-lock-defaults '((sqlplus-font-lock-keywords-1 sqlplus-font-lock-keywords-2 sqlplus-font-lock-keywords-3)
+ nil t ((?_ . "w") (?$ . "w") (?# . "w") (?& . "w"))))
+ (orcl-mode 1)
+ (use-local-map plsql-mode-map) ; std
+ (add-hook 'post-command-hook 'sqlplus-clear-mouse-selection nil t)))
+
+(setq recentf-exclude (cons (concat "^" (regexp-quote (file-name-as-directory temporary-file-directory)))
+ (when (boundp 'recentf-exclude)
+ recentf-exclude)))
+
+(when (fboundp 'ide-register-persistent-var)
+ (funcall (symbol-function 'ide-register-persistent-var) 'sqlplus-connect-strings-alist
+ ;; save proc
+ (lambda (alist)
+ (mapcar (lambda (pair)
+ (if sqlplus-save-passwords
+ pair
+ (cons (car pair) nil)))
+ alist))
+ ;; load proc
+ (lambda (alist)
+ (setq sqlplus-connect-string-history (mapcar (lambda (pair) (car pair)) alist))
+ alist)))
+
+(defun get-all-dirs (root-dir)
+ (let ((list-to-see (list root-dir))
+ result-list)
+ (while list-to-see
+ (let* ((dir (pop list-to-see))
+ (children (directory-files dir t)))
+ (push dir result-list)
+ (dolist (child children)
+ (when (and (not (string-match "^[.]+"(file-name-nondirectory child)))
+ (file-directory-p child))
+ (push child list-to-see)))))
+ result-list))
+
+(defun sqlplus-command-line ()
+ (interactive)
+ (if (comint-check-proc "*SQL*")
+ (pop-to-buffer "*SQL*")
+ (let* ((pair (sqlplus-read-connect-string nil (when sqlplus-connect-string (car (refine-connect-string sqlplus-connect-string)))))
+ (qualified-cs (car pair))
+ (refined-cs (cadr pair))
+ (password (cdr (refine-connect-string qualified-cs))))
+ (if (string-match "^\\([^@]*\\)@\\(.*\\)$" refined-cs)
+ (let ((old-sql-get-login-fun (symbol-function 'sql-get-login)))
+ (setq sql-user (match-string 1 refined-cs)
+ sql-password password
+ sql-database (match-string 2 refined-cs))
+ (unwind-protect
+ (progn
+ (fset 'sql-get-login (lambda (&rest whatever) nil))
+ (sql-oracle))
+ (fset 'sql-get-login old-sql-get-login-fun)))
+ (error "Connect string must be in form login@sid")))))
+
+(defun sqlplus-find-tnsnames ()
+ (interactive)
+ (let* ((ora-home-dir (or (getenv "ORACLE_HOME") (error "Environment variable ORACLE_HOME not set")))
+ found
+ (list-to-see (list ora-home-dir)))
+ (while (and (not found) list-to-see)
+ (let* ((dir (pop list-to-see))
+ (children (condition-case nil (directory-files dir t) (error nil))))
+ (dolist (child children)
+ (unless found
+ (if (string-match "admin.tnsnames\.ora$" child)
+ (progn
+ (setq found t)
+ (find-file child))
+ (if (and (not (string-match "^[.]+" (file-name-nondirectory child)))
+ (file-directory-p child))
+ (push child list-to-see)))))))
+ (unless found
+ (message "File tnsnames.ora not found"))))
+
+(defun sqlplus-remove-help-echo (list)
+ "Remove all HELP-ECHO properties from mode-line format value"
+ (when (listp list)
+ (if (eq (car list) :propertize)
+ (while list
+ (when (eq (cadr list) 'help-echo)
+ (setcdr list (cdddr list)))
+ (setq list (cdr list)))
+ (dolist (elem list) (sqlplus-remove-help-echo elem)))))
+
+(when (>= emacs-major-version 22)
+ (sqlplus-remove-help-echo mode-line-modes))
+
+(defun sqlplus-get-project-root-dir (path)
+ (let ((path (file-truename (substitute-in-file-name path)))
+ dir)
+ (if (file-directory-p path)
+ (progn
+ (setq path (file-name-as-directory path))
+ (setq dir path))
+ (setq dir (file-name-as-directory (file-name-directory path))))
+ (let ((last-project-dir dir)
+ (dir-list (split-string dir "/"))
+ is-project)
+ (while (directory-files dir t (concat "^" "\\(\\.svn\\|CVS\\)$") t)
+ (setq is-project t
+ last-project-dir (file-name-as-directory dir)
+ dir (file-name-as-directory (file-name-directory (directory-file-name dir)))))
+ (when is-project
+ (let ((list (nthcdr (1- (length (split-string last-project-dir "/"))) dir-list)))
+ (cond ((equal (car list) "trunk")
+ (setq last-project-dir (concat last-project-dir "trunk/")))
+ ((member (car list) '("branches" "tags"))
+ (setq last-project-dir (concat last-project-dir (car list) "/" (when (cdr list) (concat (cadr list) "/")))))
+ (t)))
+ (setq dir last-project-dir)))
+ dir))
+
+(defvar sqlplus-search-buffer-name "*search*")
+
+(defvar sqlplus-object-types-regexps
+ '(
+ ("TABLE" . "\\bcreate\\s+table\\s+[^(]*?\\b#\\b")
+ ("VIEW" . "\\bview\\s+.*?\\b#\\b")
+ ("INDEX" . "\\b(constraint|index)\\s+.*?\\b#\\b")
+ ("TRIGGER" . "\\btrigger\\s+.*?\\b#\\b")
+ ("SEQUENCE" . "\\bsequence\\s+.*?\\b#\\b")
+ ("SYNONYM" . "\\bsynonym\\s+.*?\\b#\\b")
+ ("SCHEMA" . "\\bcreate\\b.*?\\buser\\b.*?\\b#\\b")
+ ("PROCEDURE" . "\\b(procedure|function)\\b[^(]*?\\b#\\b")
+ ("PACKAGE" . "\\bpackage\\s+.*?\\b#\\b")))
+
+(defvar sqlplus-root-dir-history nil)
+
+(defvar sqlplus-compare-report-buffer-name "*Comparation Report*")
+
+(defun sqlplus-compare-schema-to-filesystem (&optional arg)
+ (interactive "P")
+ (let* ((connect-string sqlplus-connect-string)
+ (objects-alist (sqlplus-get-objects-alist sqlplus-connect-string))
+ (report-buffer (get-buffer-create sqlplus-compare-report-buffer-name))
+ (types-length (- (length objects-alist) 2))
+ (root-dir (or (sqlplus-get-root-dir connect-string)
+ (sqlplus-set-project-for-connect-string connect-string)
+ (error "Root dir not set")))
+ (counter 0))
+ (unless objects-alist
+ (error "Not ready yet - try again later"))
+ (save-excursion
+ (switch-to-buffer-other-window report-buffer))
+ (with-current-buffer report-buffer
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (insert (format "%s %s vs. %s\n\n" (current-time-string) (car (refine-connect-string connect-string)) root-dir))
+ (sit-for 0)))
+ (dolist (pair objects-alist)
+ (let ((type (upcase (format "%s" (car pair))))
+ (names (cdr pair)))
+ (unless (member type '("SCHEMA" "COLUMN"))
+ (incf counter)
+ (message (format "%s (%d/%d)..." type counter types-length))
+ (dolist (name-pair names)
+ (let* ((name (car name-pair))
+ (grep-result (sqlplus-file-get-source sqlplus-connect-string name type 'batch-mode)))
+ (with-current-buffer report-buffer
+ (let ((inhibit-read-only t))
+ (goto-char (point-max))
+ (cond ((eql (length grep-result) 0)
+ (insert (format "%s %s: not found\n" type name))
+ (sit-for 0))
+ ((and arg
+ (> (length grep-result) 1))
+ (insert (format "%s %s:\n" type name))
+ (dolist (list grep-result)
+ (insert (format " %s:%d %s\n" (car list) (cadr list) (caddr list))))
+ (sit-for 0))
+ (t)))))))))
+ (message "Done.")
+ (with-current-buffer report-buffer
+ (goto-char (point-min)))))
+
+(defun sqlplus-proj-find-files (dir file-predicate &optional dir-predicate)
+ (setq dir (file-name-as-directory (file-truename (substitute-in-file-name dir))))
+ (let (result-list)
+ (mapcar (lambda (path)
+ (if (file-directory-p path)
+ (when (and (file-accessible-directory-p path)
+ (or (null dir-predicate)
+ (funcall dir-predicate path)))
+ (setq result-list (append result-list (sqlplus-proj-find-files path file-predicate dir-predicate))))
+ (when (or (null file-predicate)
+ (funcall file-predicate path))
+ (push path result-list))))
+ (delete (concat (file-name-as-directory dir) ".")
+ (delete (concat (file-name-as-directory dir) "..")
+ (directory-files dir t nil t))))
+ result-list))
+
+(defvar sqlplus-proj-ignored-extensions '("semantic.cache"))
+
+(defun sqlplus-mode-file-regexp-list (mode-symbol-list)
+ (delq nil (mapcar (lambda (element)
+ (let ((fun-name (if (listp (cdr element)) (cadr element) (cdr element))))
+ (when (memq fun-name mode-symbol-list) (cons (car element) fun-name))))
+ auto-mode-alist)))
+
+(defun sqlplus-find-project-files (root-dir mode-symbol-list predicate)
+ (let ((obj-file-regexp-list (delq nil (mapcar (lambda (element)
+ (let ((len (length element)))
+ (unless (and (> len 0)
+ (equal (elt element (1- len)) ?/))
+ (concat (regexp-quote element) "$"))))
+ (append sqlplus-proj-ignored-extensions completion-ignored-extensions))))
+ (mode-file-regexp-list (sqlplus-mode-file-regexp-list mode-symbol-list))) ; (file-path-regexp . major-mode-function-symbol)
+ (when (and mode-symbol-list
+ (not mode-file-regexp-list))
+ (error (format "No rules for %s major modes in auto-mode-alist." (mapconcat 'identity mode-symbol-list ", "))))
+ (sqlplus-proj-find-files root-dir
+ (lambda (file-name)
+ (and (not (string-match "#" file-name))
+ (not (string-match "semantic.cache" file-name))
+ (or (and (not mode-symbol-list)
+ (not (some (lambda (regexp)
+ (string-match regexp file-name))
+ obj-file-regexp-list)))
+ (and mode-symbol-list
+ (some (lambda (element)
+ (let ((freg (if (string-match "[$]" (car element))
+ (car element)
+ (concat (car element) "$"))))
+ (when (string-match freg file-name)
+ (cdr element))))
+ mode-file-regexp-list)))
+ (or (not predicate)
+ (funcall predicate file-name))))
+ (lambda (dir-path)
+ (not (string-match "/\\(\\.svn\\|CVS\\)$" dir-path))))))
+
+
+(defun sqlplus-file-get-source (connect-string object-name object-type &optional batch-mode)
+ (interactive
+ (progn
+ (push (point-marker) plsql-mark-backward-list)
+ (list sqlplus-connect-string (thing-at-point 'symbol) nil)))
+ (unless object-name
+ (error "Nothing to search"))
+ (let* ((root-dir (or (and (not object-type)
+ (eq major-mode 'plsql-mode)
+ (buffer-file-name)
+ (sqlplus-get-project-root-dir (buffer-file-name)))
+ (sqlplus-get-root-dir connect-string)
+ (sqlplus-set-project-for-connect-string connect-string)
+ (error "Root dir not set")))
+ (mode-symbol-list '(plsql-mode sql-mode))
+ (files-to-grep (sqlplus-find-project-files root-dir mode-symbol-list nil))
+ (temp-file-path (concat (file-name-as-directory temporary-file-directory) (make-temp-name "ide-")))
+ (search-buffer (get-buffer sqlplus-search-buffer-name))
+ (regexp (let ((index 0)
+ (len (length object-name))
+ result)
+ (setq result
+ (if object-type
+ (let ((type (cond ((equal object-type "FUNCTION") "PROCEDURE")
+ ((equal object-type "PACKAGE BODY") "PACKAGE")
+ (t object-type))))
+ (cdr (assoc type sqlplus-object-types-regexps)))
+ (mapconcat 'cdr sqlplus-object-types-regexps "|")))
+ (unless result
+ (error "Not implemented"))
+ (while (and (< index (length result))
+ (string-match "#" result index))
+ (setq index (+ (match-beginning 0) len))
+ (setq result (replace-match object-name t t result)))
+ (setq index 0)
+ (while (and (< index (length result))
+ (string-match "[$]\\(\\\\b\\)?" result index))
+ (setq index (+ (match-end 0) 1))
+ (setq result (replace-match "\\$" t t result)))
+ result))
+ grep-command
+ grep-result)
+ (when search-buffer
+ (with-current-buffer search-buffer
+ (let ((inhibit-read-only t))
+ (erase-buffer))))
+ ;; (message "Object type: %S, object name: %S, regexp: %S" object-type object-name regexp)
+ (with-temp-file temp-file-path
+ (dolist (path files-to-grep)
+ (insert (concat "'" path "'\n"))))
+ (let* ((grep-command (format "cat %s | xargs grep -nHiE -e '%s'" temp-file-path regexp))
+ (raw-grep-result (split-string (shell-command-to-string grep-command) "\n" t))
+ (grep-result (delq nil (mapcar (lambda (line)
+ (string-match "^\\(.*?\\):\\([0-9]+\\):\\(.*\\)$" line)
+ (let* ((path (match-string 1 line))
+ (line-no (string-to-number (match-string 2 line)))
+ (text (match-string 3 line))
+ (text2 text)
+ (syn-table (copy-syntax-table))
+ (case-fold-search t))
+ (modify-syntax-entry ?$ "w" syn-table)
+ (modify-syntax-entry ?# "w" syn-table)
+ (modify-syntax-entry ?_ "w" syn-table)
+ (with-syntax-table syn-table
+ (when (and (or (and (not object-type)
+ (> (length raw-grep-result) 1))
+ (equal object-type "SYNONYM"))
+ (string-match "\\<\\(for\\|from\\|on\\|as\\)\\>" text2))
+ (setq text2 (substring text2 0 (match-beginning 0))))
+ ;; (message "GREP-RESULT: %s" text2)
+ (unless (or (not (string-match (concat "\\<" (regexp-quote object-name) "\\>") text2))
+ (string-match (concat "\\(--\\|\\<pro\\>\\|\\<prompt\\>\\|\\<drop\\>\\|\\<grant\\>\\).*\\<"
+ (regexp-quote object-name) "\\>") text2)
+ (and (or (and (not object-type)
+ (> (length raw-grep-result) 1))
+ (equal object-type "TRIGGER"))
+ (string-match "\\<\\(alter\\|disable\\|enable\\)\\>" text2))
+ (and (or (and (not object-type)
+ (string-match "\\<package\\>" text2)
+ current-prefix-arg)
+ (equal object-type "PACKAGE"))
+ (string-match "\\<body\\>" text2))
+ (and (or (and (not object-type)
+ (string-match "\\<package\\>" text2)
+ (not current-prefix-arg))
+ (equal object-type "PACKAGE BODY"))
+ (not (string-match "\\<body\\>" text2)))
+ (and (not object-type)
+ (not current-prefix-arg)
+ (string-match "[.]pks$" path)))
+ (list path line-no text)))))
+ raw-grep-result))))
+ (if batch-mode
+ grep-result
+ (cond ((not grep-result)
+ (error "Not found"))
+ ((eql (length grep-result) 1)
+ (sqlplus-switch-to-buffer (caar grep-result) (cadar grep-result))
+ (when connect-string
+ (setq sqlplus-connect-string connect-string)))
+ (t
+ (let ((search-buffer (get-buffer-create sqlplus-search-buffer-name)))
+ (with-current-buffer search-buffer
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (setq default-directory root-dir)
+ (erase-buffer)
+ (insert "Root dir: ")
+ (sqlplus-proj-insert-with-face root-dir 'font-lock-keyword-face)
+ (insert "; Range: ")
+ (sqlplus-proj-insert-with-face (mapconcat (lambda (sym) (sqlplus-mode-name-stringify sym)) mode-symbol-list ", ")
+ 'font-lock-keyword-face)
+ (insert "; Object type: ")
+ (sqlplus-proj-insert-with-face (or object-type "unspecified") 'font-lock-keyword-face)
+ (insert "; Object name: ")
+ (sqlplus-proj-insert-with-face object-name 'font-lock-keyword-face)
+ (insert "\n\n")
+ (compilation-minor-mode 1)
+ (dolist (result grep-result)
+ (let ((relative-path (concat "./" (file-relative-name (car result) root-dir)))
+ (line-no (cadr result))
+ (text (caddr result)))
+ (put-text-property 0 (length relative-path) 'mouse-face 'highlight relative-path)
+ (insert relative-path)
+ (insert (format ":%S:1 %s\n" line-no text))))
+ (insert (format "\n%d matches found." (length grep-result)))
+ (goto-char (point-min))
+ (when (and grep-result (fboundp 'compile-reinitialize-errors) (funcall (symbol-function 'compile-reinitialize-errors) t)))
+ (switch-to-buffer-other-window search-buffer)
+ (goto-line 1)
+ (goto-line 3))))))))))
+
+(defun sqlplus-mode-name-stringify (mode-name)
+ (let ((name (format "%s" mode-name)))
+ (replace-regexp-in-string "-" " "
+ (capitalize
+ (if (string-match "^\\(.*\\)-mode" name)
+ (match-string 1 name)
+ name)))))
+
+(defun sqlplus-proj-insert-with-face (string face)
+ (let ((point (point)))
+ (insert string)
+ (let ((overlay (make-overlay point (point))))
+ (overlay-put overlay 'face face))))
+
+(defun sqlplus-set-project-for-connect-string (connect-string)
+ (if (featurep 'ide-skel)
+ ;; Prepare sqlplus-root-dir-history (file-name-history) for user convenience
+ ;; 0. previous project root
+ ;; 1. current editor file project root
+ ;; 2. previous choices
+ ;; 3. new project roots
+ (let* ((prev-proj-root-dir (sqlplus-get-root-dir connect-string))
+ (last-sel-window (funcall 'ide-skel-get-last-selected-window))
+ (editor-file-proj-root-dir (when last-sel-window
+ (let* ((buffer (window-buffer last-sel-window))
+ (path (and buffer (buffer-file-name buffer)))
+ (project (and path (car (funcall 'ide-skel-proj-get-project-create path)))))
+ (when (funcall 'ide-skel-project-p project)
+ (funcall 'ide-skel-project-root-path project))))))
+ (setq sqlplus-root-dir-history
+ (delete-dups
+ (delq nil
+ (mapcar (lambda (dir)
+ (when dir
+ (directory-file-name (file-truename (substitute-in-file-name dir)))))
+ (append
+ (list editor-file-proj-root-dir prev-proj-root-dir)
+ sqlplus-root-dir-history
+ (mapcar (lambda (project) (funcall 'ide-skel-project-root-path project))
+ (symbol-value 'ide-skel-projects)))))))
+ (let* ((file-name-history (cdr sqlplus-root-dir-history))
+ (use-file-dialog nil)
+ (dir (directory-file-name (file-truename (substitute-in-file-name
+ (read-directory-name (format "Root dir for %s: " (car (refine-connect-string connect-string)))
+ (car sqlplus-root-dir-history)
+ (car sqlplus-root-dir-history)
+ t
+ nil))))))
+ (funcall 'ide-skel-proj-get-project-create dir)
+ (sqlplus-set-root-dir dir connect-string)
+ (message (format "Root dir for %s set to %s" (car (refine-connect-string connect-string)) dir))
+ dir))
+ (let* ((use-file-dialog nil)
+ (dir (directory-file-name (file-truename (substitute-in-file-name
+ (read-directory-name (format "Root dir for %s: " (car (refine-connect-string connect-string)))
+ nil nil t nil))))))
+ (sqlplus-set-root-dir dir connect-string)
+ (message (format "Root dir for %s set to %s" (car (refine-connect-string connect-string)) dir))
+ dir)))
+
+;;; Plugin for ide-skel.el
+
+(defstruct sqlplus-tab
+ id
+ name ; tab name
+ symbol ; view/sequence/schema/trigger/index/table/package/synonym/procedure
+ help-string
+ (display-start 1) ; display-start in side view window
+ (data nil) ; '(("name" . status)...), where status t means 'invalid'
+ draw-function ; parameters: sqlplus-tab
+ click-function ; parameters: event "@e"
+ (errors-count 0)
+ (refresh-in-progress t)
+ update-select)
+
+(defvar sqlplus-side-view-connect-string nil)
+(make-variable-buffer-local 'sqlplus-side-view-connect-string)
+
+(defvar sqlplus-side-view-active-tab nil)
+(make-variable-buffer-local 'sqlplus-side-view-active-tab)
+
+(defvar sqlplus-side-view-tabset nil)
+(make-variable-buffer-local 'sqlplus-side-view-tabset)
+
+(defface sqlplus-side-view-face '((t :inherit variable-pitch :height 0.8))
+ "Default face used in right view"
+ :group 'sqlplus)
+
+(defvar sqlplus-side-view-keymap nil)
+(unless sqlplus-side-view-keymap
+ (setq sqlplus-side-view-keymap (make-sparse-keymap))
+ (define-key sqlplus-side-view-keymap [mode-line down-mouse-1] 'ignore)
+ (define-key sqlplus-side-view-keymap [mode-line mouse-1] 'sqlplus-side-view-tab-click))
+
+(defun sqlplus-side-view-tab-click (event)
+ (interactive "@e")
+ (with-selected-window (posn-window (event-start event))
+ (let* ((previous-sel-tab-info (nth sqlplus-side-view-active-tab sqlplus-side-view-tabset))
+ (target (posn-string (event-start event)))
+ (tab-info (get-text-property (cdr target) 'tab-info (car target))))
+ (setf (sqlplus-tab-display-start previous-sel-tab-info) (line-number-at-pos (window-start)))
+ (setq sqlplus-side-view-active-tab (sqlplus-tab-id tab-info))
+ (sqlplus-side-view-redraw (current-buffer) t)
+ (sqlplus-side-view-buffer-mode-line))))
+
+(defun sqlplus-side-view-buffer-mode-line ()
+ (let* ((separator (propertize " "
+ 'face 'header-line
+ 'display '(space :width 0.2)
+ 'pointer 'arrow)))
+ (setq mode-line-format
+ (concat separator
+ (mapconcat (lambda (tab)
+ (let ((face (if (eq (sqlplus-tab-id tab) sqlplus-side-view-active-tab)
+ 'tabbar-selected
+ 'tabbar-unselected))
+ (help-echo (concat (sqlplus-tab-help-string tab)
+ (if (> (sqlplus-tab-errors-count tab) 0)
+ (format "\n(%s error%s)" (sqlplus-tab-errors-count tab)
+ (if (> (sqlplus-tab-errors-count tab) 1) "s" ""))
+ ""))))
+ (propertize (format " %s " (sqlplus-tab-name tab))
+ 'local-map sqlplus-side-view-keymap
+ 'tab-info tab
+ 'help-echo help-echo
+ 'mouse-face 'tabbar-highlight
+ 'face (if (> (sqlplus-tab-errors-count tab) 0)
+ (list '(foreground-color . "red") face)
+ face)
+ 'pointer 'hand)))
+ sqlplus-side-view-tabset
+ separator)
+ separator))))
+
+(defun sqlplus-side-view-click-on-default-handler (event)
+ (interactive "@e")
+ (with-selected-window (posn-window (event-start event))
+ (let* ((posn-point (posn-point (event-start event)))
+ (object-name (get-text-property posn-point 'object-name))
+ (object-type (get-text-property posn-point 'object-type))
+ (type (car event)))
+ (when (eq type 'mouse-3)
+ (setq type (car (x-popup-menu t (append (list 'keymap object-name)
+ (list '(sqlplus-refresh-side-view-buffer "Refresh" t))
+ (list '(mouse-1 "Get source from Oracle" t))
+ (list '(M-mouse-1 "Search source in filesystem" t))
+ (list (list 'C-M-mouse-1 (concat "Set root dir for " (car (refine-connect-string sqlplus-side-view-connect-string))) t))
+ )))))
+ (cond ((eq type 'mouse-1)
+ (sqlplus-get-source sqlplus-side-view-connect-string object-name object-type))
+ ((eq type 'M-mouse-1)
+ (sqlplus-file-get-source sqlplus-side-view-connect-string object-name object-type))
+ ((eq type 'C-M-mouse-1)
+ (sqlplus-set-project-for-connect-string sqlplus-side-view-connect-string))
+ ((eq type nil))
+ (t
+ (condition-case err
+ (funcall type)
+ (error nil)))))))
+
+(defun sqlplus-side-view-click-on-index-handler (event)
+ (interactive "@e")
+ (with-selected-window (posn-window (event-start event))
+ (let* ((posn-point (posn-point (event-start event)))
+ (object-name (get-text-property posn-point 'object-name))
+ (object-type (get-text-property posn-point 'object-type))
+ (type (car event)))
+ (when (eq type 'mouse-3)
+ (setq type (car (x-popup-menu t (append (list 'keymap object-name)
+ (list '(sqlplus-refresh-side-view-buffer "Refresh" t))
+ (list '(mouse-1 "Get source from Oracle" t))
+ (list '(M-mouse-1 "Search source in filesystem" t))
+ (list (list 'C-M-mouse-1 (concat "Set root dir for " (car (refine-connect-string sqlplus-side-view-connect-string))) t))
+ )))))
+ (cond ((eq type 'mouse-1)
+ (sqlplus-get-source sqlplus-side-view-connect-string object-name object-type))
+ ((eq type 'M-mouse-1)
+ (sqlplus-file-get-source sqlplus-side-view-connect-string object-name object-type))
+ ((eq type 'C-M-mouse-1)
+ (sqlplus-set-project-for-connect-string sqlplus-side-view-connect-string))
+ ((eq type nil))
+ (t
+ (condition-case err
+ (funcall type)
+ (error nil)))))))
+
+(defun sqlplus-side-view-click-on-schema-handler (event)
+ (interactive "@e")
+ (with-selected-window (posn-window (event-start event))
+ (let* ((posn-point (posn-point (event-start event)))
+ (object-name (get-text-property posn-point 'object-name))
+ (object-type (get-text-property posn-point 'object-type))
+ (last-selected-win (funcall 'ide-skel-get-last-selected-window))
+ (type (car event)))
+ (when (eq type 'mouse-3)
+ (setq type (car (x-popup-menu t (append (list 'keymap object-name)
+ (list '(sqlplus-refresh-side-view-buffer "Refresh" t))
+ (list '(mouse-1 "Connect to schema" t))
+ (list '(M-mouse-1 "Search source in filesystem" t))
+ (list (list 'C-M-mouse-1 (concat "Set root dir for " (car (refine-connect-string sqlplus-side-view-connect-string))) t))
+ )))))
+ (cond ((eq type 'mouse-1)
+ (when (string-match "@.*$" sqlplus-side-view-connect-string)
+ (let* ((cs (downcase (concat object-name (match-string 0 sqlplus-side-view-connect-string))))
+ (pair (sqlplus-read-connect-string cs cs)))
+ (select-window (or last-selected-win (funcall 'ide-skel-get-editor-window)))
+ (sqlplus (car pair) (concat (cadr pair) (concat "." sqlplus-session-file-extension))))))
+ ((eq type 'M-mouse-1)
+ (sqlplus-file-get-source sqlplus-side-view-connect-string object-name object-type))
+ ((eq type 'C-M-mouse-1)
+ (sqlplus-set-project-for-connect-string sqlplus-side-view-connect-string))
+ ((eq type nil))
+ (t
+ (condition-case err
+ (funcall type)
+ (error nil))))
+ (select-window (funcall 'ide-skel-get-last-selected-window)))))
+
+(defun sqlplus-side-view-click-on-table-handler (event)
+ (interactive "@e")
+ (with-selected-window (posn-window (event-start event))
+ (let* ((posn-point (posn-point (event-start event)))
+ (object-name (get-text-property posn-point 'object-name))
+ (object-type (get-text-property posn-point 'object-type))
+ (type (car event)))
+ (when (eq type 'mouse-3)
+ (setq type (car (x-popup-menu t (append (list 'keymap object-name)
+ (list '(sqlplus-refresh-side-view-buffer "Refresh" t))
+ (list '(mouse-1 "Show description" t))
+ (list '(C-mouse-1 "Select *" t))
+ (list '(S-mouse-1 "Get source from Oracle" t))
+ (list '(M-mouse-1 "Search source in filesystem" t))
+ (list (list 'C-M-mouse-1 (concat "Set root dir for " (car (refine-connect-string sqlplus-side-view-connect-string))) t))
+ )))))
+ (cond ((eq type 'mouse-1)
+ (sqlplus-execute sqlplus-side-view-connect-string
+ (sqlplus-fontify-string sqlplus-side-view-connect-string (format "desc %s;" object-name))
+ nil nil))
+ ((eq type 'C-mouse-1)
+ (sqlplus-execute sqlplus-side-view-connect-string
+ (sqlplus-fontify-string sqlplus-side-view-connect-string (format "select * from %s;" object-name))
+ nil nil))
+ ((eq type 'S-mouse-1)
+ (sqlplus-get-source sqlplus-side-view-connect-string object-name object-type))
+ ((eq type 'M-mouse-1)
+ (sqlplus-file-get-source sqlplus-side-view-connect-string object-name object-type))
+ ((eq type 'C-M-mouse-1)
+ (sqlplus-set-project-for-connect-string sqlplus-side-view-connect-string))
+ ((eq type nil))
+ (t
+ (condition-case err
+ (funcall type)
+ (error nil))))
+ (select-window (funcall 'ide-skel-get-last-selected-window)))))
+
+(defun sqlplus-side-view-click-on-package-handler (event)
+ (interactive "@e")
+ (with-selected-window (posn-window (event-start event))
+ (let* ((posn-point (posn-point (event-start event)))
+ (object-name (get-text-property posn-point 'object-name))
+ (object-type (get-text-property posn-point 'object-type))
+ (type (car event)))
+ (when (eq type 'mouse-3)
+ (setq type (car (x-popup-menu t (append (list 'keymap object-name)
+ (list '(sqlplus-refresh-side-view-buffer "Refresh" t))
+ (list '(S-mouse-1 "Get package header from Oracle" t))
+ (list '(mouse-1 "Get package body from Oracle" t))
+ (list '(S-M-mouse-1 "Search header source in filesystem" t))
+ (list '(M-mouse-1 "Search body source in filesystem" t))
+ (list (list 'C-M-mouse-1 (concat "Set root dir for " (car (refine-connect-string sqlplus-side-view-connect-string))) t))
+ )))))
+ (cond ((eq type 'S-mouse-1)
+ (sqlplus-get-source sqlplus-side-view-connect-string object-name object-type))
+ ((eq type 'mouse-1)
+ (sqlplus-get-source sqlplus-side-view-connect-string object-name "PACKAGE BODY"))
+ ((eq type 'M-mouse-1)
+ (sqlplus-file-get-source sqlplus-side-view-connect-string object-name "PACKAGE BODY"))
+ ((eq type 'S-M-mouse-1)
+ (sqlplus-file-get-source sqlplus-side-view-connect-string object-name "PACKAGE"))
+ ((eq type 'C-M-mouse-1)
+ (sqlplus-set-project-for-connect-string sqlplus-side-view-connect-string))
+ ((eq type nil))
+ (t
+ (condition-case err
+ (funcall type)
+ (error nil)))))))
+
+(defun sqlplus-side-view-default-draw-panel (tab-info click-function)
+ (let ((pairs (sort (sqlplus-tab-data tab-info)
+ (lambda (pair1 pair2) (string< (car pair1) (car pair2)))))
+ (type-name (upcase (symbol-name (sqlplus-tab-symbol tab-info)))))
+ (dolist (pair pairs)
+ (let* ((label (format " % -100s" (car pair)))
+ (km (make-sparse-keymap)))
+ (define-key km [down-mouse-1] 'ignore)
+ (define-key km [mouse-1] click-function)
+ (define-key km [C-down-mouse-1] 'ignore)
+ (define-key km [C-mouse-1] click-function)
+ (define-key km [S-down-mouse-1] 'ignore)
+ (define-key km [S-mouse-1] click-function)
+ (define-key km [down-mouse-3] 'ignore)
+ (define-key km [mouse-3] click-function)
+ (setq label (propertize label
+ 'mouse-face 'ide-skel-highlight-face
+ 'face (if (cdr pair)
+ '(sqlplus-side-view-face (foreground-color . "red"))
+ 'sqlplus-side-view-face)
+ 'local-map km
+ 'pointer 'hand
+ 'object-name (car pair)
+ 'object-type type-name))
+ (insert label)
+ (insert "\n")))))
+
+(defun sqlplus-refresh-side-view-buffer ()
+ (let* ((tab-info (nth sqlplus-side-view-active-tab sqlplus-side-view-tabset))
+ (update-select (sqlplus-tab-update-select tab-info)))
+ (unless (sqlplus-tab-refresh-in-progress tab-info)
+ (sqlplus-hidden-select sqlplus-side-view-connect-string update-select 'sqlplus-my-update-handler))))
+
+(defun sqlplus-get-default-update-select (symbol)
+ (concat "select object_name, object_type, decode( status, 'INVALID', 'I', ' ' ) from user_objects\n"
+ "where object_name not like 'BIN$%'\n"
+ (format "and object_type = '%s';" (upcase (symbol-name symbol)))))
+
+(defun sqlplus-create-side-view-buffer (connect-string)
+ (let* ((original-connect-string connect-string)
+ (connect-string (car (refine-connect-string connect-string)))
+ (buffer (funcall 'ide-skel-get-side-view-buffer-create
+ (concat " Ide Skel Right View SQL " connect-string)
+ 'right "SQL" (concat "SQL Panel for " connect-string)
+ (lambda (editor-buffer)
+ (let ((connect-string sqlplus-side-view-connect-string))
+ (with-current-buffer editor-buffer
+ (and connect-string
+ (equal (car (refine-connect-string sqlplus-connect-string))
+ (car (refine-connect-string connect-string)))
+ )))))))
+ (with-current-buffer buffer
+ (set 'ide-skel-tabbar-menu-function
+ (lambda ()
+ (let ((tab-info (nth sqlplus-side-view-active-tab sqlplus-side-view-tabset)))
+ (list
+ (unless (sqlplus-tab-refresh-in-progress tab-info)
+ '(sqlplus-refresh-side-view-buffer "Refresh" t))))))
+ (setq sqlplus-side-view-connect-string original-connect-string
+ sqlplus-side-view-active-tab 0
+ sqlplus-side-view-tabset
+ (list
+ (make-sqlplus-tab :id 0 :name "Tab" :symbol 'table :help-string "Tables" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select (sqlplus-get-default-update-select 'table)
+ :click-function 'sqlplus-side-view-click-on-table-handler)
+ (make-sqlplus-tab :id 1 :name "Vie" :symbol 'view :help-string "Views" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select (sqlplus-get-default-update-select 'view)
+ :click-function 'sqlplus-side-view-click-on-table-handler)
+ (make-sqlplus-tab :id 2 :name "Idx" :symbol 'index :help-string "Indexes" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select (sqlplus-get-default-update-select 'index)
+ :click-function 'sqlplus-side-view-click-on-index-handler)
+ (make-sqlplus-tab :id 3 :name "Tri" :symbol 'trigger :help-string "Triggers" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select (sqlplus-get-default-update-select 'trigger)
+ :click-function 'sqlplus-side-view-click-on-default-handler)
+ (make-sqlplus-tab :id 4 :name "Seq" :symbol 'sequence :help-string "Sequences" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select (sqlplus-get-default-update-select 'sequence)
+ :click-function 'sqlplus-side-view-click-on-default-handler)
+ (make-sqlplus-tab :id 5 :name "Syn" :symbol 'synonym :help-string "Synonyms" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select (sqlplus-get-default-update-select 'synonym)
+ :click-function 'sqlplus-side-view-click-on-default-handler)
+ (make-sqlplus-tab :id 6 :name "Pkg" :symbol 'package :help-string "PL/SQL Packages" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select (sqlplus-get-default-update-select 'package)
+ :click-function 'sqlplus-side-view-click-on-package-handler)
+ (make-sqlplus-tab :id 7 :name "Prc" :symbol 'procedure :help-string "PL/SQL Functions & Procedures" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select (concat "select object_name, object_type, decode( status, 'INVALID', 'I', ' ' ) from user_objects\n"
+ "where object_name not like 'BIN$%'\n"
+ "and object_type in ('FUNCTION', 'PROCEDURE');")
+ :click-function 'sqlplus-side-view-click-on-default-handler)
+ (make-sqlplus-tab :id 8 :name "Sch" :symbol 'schema :help-string "Schemas" :draw-function 'sqlplus-side-view-default-draw-panel
+ :update-select "select username, 'SCHEMA', ' ' from all_users where username not like 'BIN$%';"
+ :click-function 'sqlplus-side-view-click-on-schema-handler)
+ ))
+ (sqlplus-side-view-buffer-mode-line))
+ buffer))
+
+(defun sqlplus-side-view-redraw (sql-view-buffer &optional window-start-from-tab-info)
+ (with-current-buffer sql-view-buffer
+ (let* ((point (point))
+ (tab-info (nth sqlplus-side-view-active-tab sqlplus-side-view-tabset))
+ (window-start (when (and (symbol-value 'ide-skel-current-right-view-window)
+ (eq (window-buffer (symbol-value 'ide-skel-current-right-view-window)) (current-buffer)))
+ (if window-start-from-tab-info
+ (sqlplus-tab-display-start tab-info)
+ (line-number-at-pos (window-start (symbol-value 'ide-skel-current-right-view-window)))))))
+ (let ((inhibit-read-only t))
+ (setq buffer-read-only nil)
+ (erase-buffer)
+ (when (sqlplus-tab-draw-function tab-info)
+ (funcall (sqlplus-tab-draw-function tab-info) tab-info (sqlplus-tab-click-function tab-info))))
+ (if window-start
+ (let ((pos (save-excursion
+ (goto-line window-start)
+ (beginning-of-line)
+ (point))))
+ (set-window-start (symbol-value 'ide-skel-current-right-view-window) pos)
+ (setf (sqlplus-tab-display-start tab-info) window-start))
+ (goto-char point)
+ (beginning-of-line)))))
+
+(defun sqlplus-side-view-update-data (connect-string alist)
+ (let* ((connect-string (car (refine-connect-string connect-string)))
+ (sql-view-buffer (sqlplus-get-side-view-buffer connect-string))
+ was-proc)
+ (when sql-view-buffer
+ (with-current-buffer sql-view-buffer
+ (dolist (pair alist)
+ (let* ((symbol (if (eq (car pair) 'function) 'procedure (car pair)))
+ (data-list (cdr pair))
+ (tab-info (some (lambda (tab)
+ (when (eq (sqlplus-tab-symbol tab) symbol)
+ tab))
+ sqlplus-side-view-tabset)))
+ (when tab-info
+ (setf (sqlplus-tab-refresh-in-progress tab-info) nil)
+ (setf (sqlplus-tab-data tab-info)
+ (if (and (eq symbol 'procedure)
+ was-proc)
+ (append (sqlplus-tab-data tab-info) (copy-list data-list))
+ data-list))
+ (when (eq symbol 'procedure)
+ (setq was-proc t))
+ (setf (sqlplus-tab-errors-count tab-info)
+ (count t (mapcar 'cdr data-list)))
+ (when (eql sqlplus-side-view-active-tab (sqlplus-tab-id tab-info))
+ (sqlplus-side-view-redraw (current-buffer))))))
+ (sqlplus-side-view-buffer-mode-line)
+ (force-mode-line-update)))))
+
+(defun sqlplus-side-view-window-function (side event &rest list)
+ (when (and (eq side 'right)
+ (symbol-value 'ide-skel-current-right-view-window)
+ (with-current-buffer (symbol-value 'ide-skel-current-editor-buffer)
+ sqlplus-connect-string))
+ (cond ((memq event '(show editor-buffer-changed))
+ (let ((sql-view-buffer (sqlplus-get-side-view-buffer (with-current-buffer (symbol-value 'ide-skel-current-editor-buffer)
+ sqlplus-connect-string))))
+ (when sql-view-buffer
+ (with-current-buffer sql-view-buffer
+ (set 'ide-skel-tabbar-enabled t)
+ (funcall 'ide-skel-side-window-switch-to-buffer (symbol-value 'ide-skel-current-right-view-window) sql-view-buffer)))))))
+ nil)
+
+(add-hook 'ide-skel-side-view-window-functions 'sqlplus-side-view-window-function)
+
+
+(provide 'sqlplus)
+
+;;; sqlplus.el ends here
diff --git a/emacs.d/tabbar.el b/emacs.d/tabbar.el
new file mode 100644
index 0000000..09db712
--- /dev/null
+++ b/emacs.d/tabbar.el
@@ -0,0 +1,1932 @@
+;;; Tabbar.el --- Display a tab bar in the header line
+
+;; Copyright (C) 2003, 2004, 2005 David Ponce
+
+;; Author: David Ponce <david@dponce.com>
+;; Maintainer: David Ponce <david@dponce.com>
+;; Created: 25 February 2003
+;; Keywords: convenience
+;; Revision: $Id: tabbar.el,v 1.69 2006/06/08 08:27:39 ponced Exp $
+
+(defconst tabbar-version "2.0")
+
+;; This file is not part of GNU Emacs.
+
+;; 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.
+
+;;; Commentary:
+;;
+;; This library provides the Tabbar global minor mode to display a tab
+;; bar in the header line of Emacs 21 and later versions. You can use
+;; the mouse to click on a tab and select it. Also, three buttons are
+;; displayed on the left side of the tab bar in this order: the
+;; "home", "scroll left", and "scroll right" buttons. The "home"
+;; button is a general purpose button used to change something on the
+;; tab bar. The scroll left and scroll right buttons are used to
+;; scroll tabs horizontally. Tabs can be divided up into groups to
+;; maintain several sets of tabs at the same time (see also the
+;; chapter "Core" below for more details on tab grouping). Only one
+;; group is displayed on the tab bar, and the "home" button, for
+;; example, can be used to navigate through the different groups, to
+;; show different tab bars.
+;;
+;; In a graphic environment, using the mouse is probably the preferred
+;; way to work with the tab bar. However, you can also use the tab
+;; bar when Emacs is running on a terminal, so it is possible to use
+;; commands to press special buttons, or to navigate cyclically
+;; through tabs.
+;;
+;; These commands, and default keyboard shortcuts, are provided:
+;;
+;; `tabbar-mode'
+;; Toggle the Tabbar global minor mode. When enabled a tab bar is
+;; displayed in the header line.
+;;
+;; `tabbar-local-mode' (C-c <C-f10>)
+;; Toggle the Tabbar-Local minor mode. Provided the global minor
+;; mode is turned on, the tab bar becomes local in the current
+;; buffer when the local minor mode is enabled. This permits to
+;; see the tab bar in a buffer where the header line is already
+;; used by another mode (like `Info-mode' for example).
+;;
+;; `tabbar-mwheel-mode'
+;; Toggle the Tabbar-Mwheel global minor mode. When enabled you
+;; can use the mouse wheel to navigate through tabs of groups.
+;;
+;; `tabbar-press-home' (C-c <C-home>)
+;; `tabbar-press-scroll-left' (C-c <C-prior>)
+;; `tabbar-press-scroll-right' (C-c <C-next>)
+;; Simulate a mouse-1 click on respectively the "home", "scroll
+;; left", and "scroll right" buttons. A numeric prefix argument
+;; value of 2, or 3, respectively simulates a mouse-2, or mouse-3
+;; click.
+;;
+;; `tabbar-backward' (C-c <C-left>)
+;; `tabbar-forward' (C-c <C-right>)
+;; Are the basic commands to navigate cyclically through tabs or
+;; groups of tabs. The cycle is controlled by the
+;; `tabbar-cycle-scope' option. The default is to navigate
+;; through all tabs across all existing groups of tabs. You can
+;; change the default behavior to navigate only through the tabs
+;; visible on the tab bar, or through groups of tabs only. Or use
+;; the more specialized commands below.
+;;
+;; `tabbar-backward-tab'
+;; `tabbar-forward-tab'
+;; Navigate through the tabs visible on the tab bar.
+;;
+;; `tabbar-backward-group' (C-c <C-up>)
+;; `tabbar-forward-group' (C-c <C-down>)
+;; Navigate through existing groups of tabs.
+;;
+;;
+;; Core
+;; ----
+;;
+;; The content of the tab bar is represented by an internal data
+;; structure: a tab set. A tab set is a collection (group) of tabs,
+;; identified by an unique name. In a tab set, at any time, one and
+;; only one tab is designated as selected within the tab set.
+;;
+;; A tab is a simple data structure giving the value of the tab, and a
+;; reference to its tab set container. A tab value can be any Lisp
+;; object. Each tab object is guaranteed to be unique.
+;;
+;; A tab set is displayed on the tab bar through a "view" defined by
+;; the index of the leftmost tab shown. Thus, it is possible to
+;; scroll the tab bar horizontally by changing the start index of the
+;; tab set view.
+;;
+;; The visual representation of a tab bar is a list of valid
+;; `header-line-format' template elements, one for each special
+;; button, and for each tab found into a tab set "view". When the
+;; visual representation of a tab is required, the function specified
+;; in the variable `tabbar-tab-label-function' is called to obtain it.
+;; The visual representation of a special button is obtained by
+;; calling the function specified in `tabbar-button-label-function',
+;; which is passed a button name among `home', `scroll-left', or
+;; `scroll-right'. There are also options and faces to customize the
+;; appearance of buttons and tabs (see the code for more details).
+;;
+;; When the mouse is over a tab, the function specified in
+;; `tabbar-help-on-tab-function' is called, which is passed the tab
+;; and should return a help string to display. When a tab is
+;; selected, the function specified in `tabbar-select-tab-function' is
+;; called, which is passed the tab and the event received.
+;;
+;; Similarly, to control the behavior of the special buttons, the
+;; following variables are available, for respectively the `home',
+;; `scroll-left' and `scroll-right' value of `<button>':
+;;
+;; `tabbar-<button>-function'
+;; Function called when <button> is selected. The function is
+;; passed the mouse event received.
+;;
+;; `tabbar-<button>-help-function'
+;; Function called with no arguments to obtain a help string
+;; displayed when the mouse is over <button>.
+;;
+;; To increase performance, each tab set automatically maintains its
+;; visual representation in a cache. As far as possible, the cache is
+;; used to display the tab set, and refreshed only when necessary.
+;;
+;; Several tab sets can be maintained at the same time. Only one is
+;; displayed on the tab bar, it is obtained by calling the function
+;; specified in the variable `tabbar-current-tabset-function'.
+;;
+;; A special tab set is maintained, that contains the list of the
+;; currently selected tabs in the existing tab sets. This tab set is
+;; useful to show the existing tab sets in a tab bar, and switch
+;; between them easily. The function `tabbar-get-tabsets-tabset'
+;; returns this special tab set.
+;;
+;;
+;; Buffer tabs
+;; -----------
+;;
+;; The default tab bar implementation provided displays buffers in
+;; dedicated tabs. Selecting a tab, switch (mouse-1), or pop
+;; (mouse-2), to the buffer it contains.
+;;
+;; The list of buffers put in tabs is provided by the function
+;; specified in the variable `tabbar-buffer-list-function'. The
+;; default function: `tabbar-buffer-list', excludes buffers whose name
+;; starts with a space, when they are not visiting a file.
+;;
+;; Buffers are organized in groups, each one represented by a tab set.
+;; A buffer can have no group, or belong to more than one group. The
+;; function specified by the variable `tabbar-buffer-groups-function'
+;; is called for each buffer to obtain the groups it belongs to. The
+;; default function provided: `tabbar-buffer-groups' organizes buffers
+;; depending on their major mode (see that function for details).
+;;
+;; The "home" button toggles display of buffer groups on the tab bar,
+;; allowing to easily show another buffer group by clicking on the
+;; associated tab.
+;;
+;; Known problems:
+;;
+;; Bug item #858306 at <http://sf.net/tracker/?group_id=79309>:
+;; tabbar-mode crashes GNU Emacs 21.3 on MS-Windows 98/95.
+;;
+
+;;; History:
+;;
+
+;;; Code:
+
+;;; Options
+;;
+(defgroup tabbar nil
+ "Display a tab bar in the header line."
+ :group 'convenience)
+
+(defcustom tabbar-cycle-scope nil
+ "*Specify the scope of cyclic navigation through tabs.
+The following scopes are possible:
+
+- `tabs'
+ Navigate through visible tabs only.
+- `groups'
+ Navigate through tab groups only.
+- default
+ Navigate through visible tabs, then through tab groups."
+ :group 'tabbar
+ :type '(choice :tag "Cycle through..."
+ (const :tag "Visible Tabs Only" tabs)
+ (const :tag "Tab Groups Only" groups)
+ (const :tag "Visible Tabs then Tab Groups" nil)))
+
+(defcustom tabbar-auto-scroll-flag t
+ "*Non-nil means to automatically scroll the tab bar.
+That is, when a tab is selected outside of the tab bar visible area,
+the tab bar is scrolled horizontally so the selected tab becomes
+visible."
+ :group 'tabbar
+ :type 'boolean)
+
+(defvar tabbar-inhibit-functions '(tabbar-default-inhibit-function)
+ "List of functions to be called before displaying the tab bar.
+Those functions are called one by one, with no arguments, until one of
+them returns a non-nil value, and thus, prevents to display the tab
+bar.")
+
+(defvar tabbar-current-tabset-function nil
+ "Function called with no argument to obtain the current tab set.
+This is the tab set displayed on the tab bar.")
+
+(defvar tabbar-tab-label-function nil
+ "Function that obtains a tab label displayed on the tab bar.
+The function is passed a tab and should return a string.")
+
+(defvar tabbar-select-tab-function nil
+ "Function that select a tab.
+The function is passed a mouse event and a tab, and should make it the
+selected tab.")
+
+(defvar tabbar-help-on-tab-function nil
+ "Function to obtain a help string for a tab.
+The help string is displayed when the mouse is onto the button. The
+function is passed the tab and should return a help string or nil for
+none.")
+
+(defvar tabbar-button-label-function nil
+ "Function that obtains a button label displayed on the tab bar.
+The function is passed a button name should return a propertized
+string to display.")
+
+(defvar tabbar-home-function nil
+ "Function called when clicking on the tab bar home button.
+The function is passed the mouse event received.")
+
+(defvar tabbar-home-help-function nil
+ "Function to obtain a help string for the tab bar home button.
+The help string is displayed when the mouse is onto the button.
+The function is called with no arguments.")
+
+(defvar tabbar-scroll-left-function 'tabbar-scroll-left
+ "Function that scrolls tabs on left.
+The function is passed the mouse event received when clicking on the
+scroll left button. It should scroll the current tab set.")
+
+(defvar tabbar-scroll-left-help-function 'tabbar-scroll-left-help
+ "Function to obtain a help string for the scroll left button.
+The help string is displayed when the mouse is onto the button.
+The function is called with no arguments.")
+
+(defvar tabbar-scroll-right-function 'tabbar-scroll-right
+ "Function that scrolls tabs on right.
+The function is passed the mouse event received when clicking on the
+scroll right button. It should scroll the current tab set.")
+
+(defvar tabbar-scroll-right-help-function 'tabbar-scroll-right-help
+ "Function to obtain a help string for the scroll right button.
+The help string is displayed when the mouse is onto the button.
+The function is called with no arguments.")
+
+;;; Misc.
+;;
+(eval-and-compile
+ (defalias 'tabbar-display-update
+ (if (fboundp 'force-window-update)
+ #'(lambda () (force-window-update (selected-window)))
+ 'force-mode-line-update)))
+
+(defsubst tabbar-click-p (event)
+ "Return non-nil if EVENT is a mouse click event."
+ (memq 'click (event-modifiers event)))
+
+(defun tabbar-shorten (str width)
+ "Return a shortened string from STR that fits in the given display WIDTH.
+WIDTH is specified in terms of character display width in the current
+buffer; see also `char-width'. If STR display width is greater than
+WIDTH, STR is truncated and an ellipsis string \"...\" is inserted at
+end or in the middle of the returned string, depending on available
+room."
+ (let* ((n (length str))
+ (sw (string-width str))
+ (el "...")
+ (ew (string-width el))
+ (w 0)
+ (i 0))
+ (cond
+ ;; STR fit in WIDTH, return it.
+ ((<= sw width)
+ str)
+ ;; There isn't enough room for the ellipsis, STR is just
+ ;; truncated to fit in WIDTH.
+ ((<= width ew)
+ (while (< w width)
+ (setq w (+ w (char-width (aref str i)))
+ i (1+ i)))
+ (substring str 0 i))
+ ;; There isn't enough room to insert the ellipsis in the middle
+ ;; of the truncated string, so put the ellipsis at end.
+ ((zerop (setq sw (/ (- width ew) 2)))
+ (setq width (- width ew))
+ (while (< w width)
+ (setq w (+ w (char-width (aref str i)))
+ i (1+ i)))
+ (concat (substring str 0 i) el))
+ ;; Put the ellipsis in the middle of the truncated string.
+ (t
+ (while (< w sw)
+ (setq w (+ w (char-width (aref str i)))
+ i (1+ i)))
+ (setq w (+ w ew))
+ (while (< w width)
+ (setq n (1- n)
+ w (+ w (char-width (aref str n)))))
+ (concat (substring str 0 i) el (substring str n)))
+ )))
+
+;;; Tab and tab set
+;;
+(defsubst tabbar-make-tab (object tabset)
+ "Return a new tab with value OBJECT.
+TABSET is the tab set the tab belongs to."
+ (cons object tabset))
+
+(defsubst tabbar-tab-value (tab)
+ "Return the value of tab TAB."
+ (car tab))
+
+(defsubst tabbar-tab-tabset (tab)
+ "Return the tab set TAB belongs to."
+ (cdr tab))
+
+(defvar tabbar-tabsets nil
+ "The tab sets store.")
+
+(defvar tabbar-tabsets-tabset nil
+ "The special tab set of existing tab sets.")
+
+(defvar tabbar-current-tabset nil
+ "The tab set currently displayed on the tab bar.")
+(make-variable-buffer-local 'tabbar-current-tabset)
+
+(defvar tabbar-init-hook nil
+ "Hook run after tab bar data has been initialized.
+You should use this hook to initialize dependent data.")
+
+(defsubst tabbar-init-tabsets-store ()
+ "Initialize the tab set store."
+ (setq tabbar-tabsets (make-vector 31 0)
+ tabbar-tabsets-tabset (make-symbol "tabbar-tabsets-tabset"))
+ (put tabbar-tabsets-tabset 'start 0)
+ (run-hooks 'tabbar-init-hook))
+
+(defvar tabbar-quit-hook nil
+ "Hook run after tab bar data has been freed.
+You should use this hook to reset dependent data.")
+
+(defsubst tabbar-free-tabsets-store ()
+ "Free the tab set store."
+ (setq tabbar-tabsets nil
+ tabbar-tabsets-tabset nil)
+ (run-hooks 'tabbar-quit-hook))
+
+;; Define an "hygienic" function free of side effect between its local
+;; variables and those of the callee.
+(eval-and-compile
+ (defalias 'tabbar-map-tabsets
+ (let ((function (make-symbol "function"))
+ (result (make-symbol "result"))
+ (tabset (make-symbol "tabset")))
+ `(lambda (,function)
+ "Apply FUNCTION to each tab set, and make a list of the results.
+The result is a list just as long as the number of existing tab sets."
+ (let (,result)
+ (mapatoms
+ #'(lambda (,tabset)
+ (push (funcall ,function ,tabset) ,result))
+ tabbar-tabsets)
+ ,result)))))
+
+(defun tabbar-make-tabset (name &rest objects)
+ "Make a new tab set whose name is the string NAME.
+It is initialized with tabs build from the list of OBJECTS."
+ (let* ((tabset (intern name tabbar-tabsets))
+ (tabs (mapcar #'(lambda (object)
+ (tabbar-make-tab object tabset))
+ objects)))
+ (set tabset tabs)
+ (put tabset 'select (car tabs))
+ (put tabset 'start 0)
+ tabset))
+
+(defsubst tabbar-get-tabset (name)
+ "Return the tab set whose name is the string NAME.
+Return nil if not found."
+ (intern-soft name tabbar-tabsets))
+
+(defsubst tabbar-delete-tabset (tabset)
+ "Delete the tab set TABSET.
+That is, remove it from the tab sets store."
+ (unintern tabset tabbar-tabsets))
+
+(defsubst tabbar-tabs (tabset)
+ "Return the list of tabs in TABSET."
+ (symbol-value tabset))
+
+(defsubst tabbar-tab-values (tabset)
+ "Return the list of tab values in TABSET."
+ (mapcar 'tabbar-tab-value (tabbar-tabs tabset)))
+
+(defsubst tabbar-get-tab (object tabset)
+ "Search for a tab with value OBJECT in TABSET.
+Return the tab found, or nil if not found."
+ (assoc object (tabbar-tabs tabset)))
+
+(defsubst tabbar-member (tab tabset)
+ "Return non-nil if TAB is in TABSET."
+ (or (eq (tabbar-tab-tabset tab) tabset)
+ (memq tab (tabbar-tabs tabset))))
+
+(defsubst tabbar-template (tabset)
+ "Return the cached visual representation of TABSET.
+That is, a `header-line-format' template, or nil if the cache is
+empty."
+ (get tabset 'template))
+
+(defsubst tabbar-set-template (tabset template)
+ "Set the cached visual representation of TABSET to TEMPLATE.
+TEMPLATE must be a valid `header-line-format' template, or nil to
+cleanup the cache."
+ (put tabset 'template template))
+
+(defsubst tabbar-selected-tab (tabset)
+ "Return the tab selected in TABSET."
+ (get tabset 'select))
+
+(defsubst tabbar-selected-value (tabset)
+ "Return the value of the tab selected in TABSET."
+ (tabbar-tab-value (tabbar-selected-tab tabset)))
+
+(defsubst tabbar-selected-p (tab tabset)
+ "Return non-nil if TAB is the selected tab in TABSET."
+ (eq tab (tabbar-selected-tab tabset)))
+
+(defvar tabbar--track-selected nil)
+
+(defsubst tabbar-select-tab (tab tabset)
+ "Make TAB the selected tab in TABSET.
+Does nothing if TAB is not found in TABSET.
+Return TAB if selected, nil if not."
+ (when (tabbar-member tab tabset)
+ (unless (tabbar-selected-p tab tabset)
+ (tabbar-set-template tabset nil)
+ (setq tabbar--track-selected tabbar-auto-scroll-flag))
+ (put tabset 'select tab)))
+
+(defsubst tabbar-select-tab-value (object tabset)
+ "Make the tab with value OBJECT, the selected tab in TABSET.
+Does nothing if a tab with value OBJECT is not found in TABSET.
+Return the tab selected, or nil if nothing was selected."
+ (tabbar-select-tab (tabbar-get-tab object tabset) tabset))
+
+(defsubst tabbar-start (tabset)
+ "Return the index of the first visible tab in TABSET."
+ (get tabset 'start))
+
+(defsubst tabbar-view (tabset)
+ "Return the list of visible tabs in TABSET.
+That is, the sub-list of tabs starting at the first visible one."
+ (nthcdr (tabbar-start tabset) (tabbar-tabs tabset)))
+
+(defun tabbar-add-tab (tabset object &optional append)
+ "Add to TABSET a tab with value OBJECT if there isn't one there yet.
+If the tab is added, it is added at the beginning of the tab list,
+unless the optional argument APPEND is non-nil, in which case it is
+added at the end."
+ (let ((tabs (tabbar-tabs tabset)))
+ (if (tabbar-get-tab object tabset)
+ tabs
+ (let ((tab (tabbar-make-tab object tabset)))
+ (tabbar-set-template tabset nil)
+ (set tabset (if append
+ (append tabs (list tab))
+ (cons tab tabs)))))))
+
+(defun tabbar-delete-tab (tab)
+ "Remove TAB from its tab set."
+ (let* ((tabset (tabbar-tab-tabset tab))
+ (tabs (tabbar-tabs tabset))
+ (sel (eq tab (tabbar-selected-tab tabset)))
+ (next (and sel (cdr (memq tab tabs)))))
+ (tabbar-set-template tabset nil)
+ (setq tabs (delq tab tabs))
+ ;; When the selected tab is deleted, select the next one, if
+ ;; available, or the last one otherwise.
+ (and sel (tabbar-select-tab (car (or next (last tabs))) tabset))
+ (set tabset tabs)))
+
+(defun tabbar-scroll (tabset count)
+ "Scroll the visible tabs in TABSET of COUNT units.
+If COUNT is positive move the view on right. If COUNT is negative,
+move the view on left."
+ (let ((start (min (max 0 (+ (tabbar-start tabset) count))
+ (1- (length (tabbar-tabs tabset))))))
+ (when (/= start (tabbar-start tabset))
+ (tabbar-set-template tabset nil)
+ (put tabset 'start start))))
+
+(defun tabbar-tab-next (tabset tab &optional before)
+ "Search in TABSET for the tab after TAB.
+If optional argument BEFORE is non-nil, search for the tab before
+TAB. Return the tab found, or nil otherwise."
+ (let* (last (tabs (tabbar-tabs tabset)))
+ (while (and tabs (not (eq tab (car tabs))))
+ (setq last (car tabs)
+ tabs (cdr tabs)))
+ (and tabs (if before last (nth 1 tabs)))))
+
+(defun tabbar-current-tabset (&optional update)
+ "Return the tab set currently displayed on the tab bar.
+If optional argument UPDATE is non-nil, call the user defined function
+`tabbar-current-tabset-function' to obtain it. Otherwise return the
+current cached copy."
+ (and update tabbar-current-tabset-function
+ (setq tabbar-current-tabset
+ (funcall tabbar-current-tabset-function)))
+ tabbar-current-tabset)
+
+(defun tabbar-get-tabsets-tabset ()
+ "Return the tab set of selected tabs in existing tab sets."
+ (set tabbar-tabsets-tabset (tabbar-map-tabsets 'tabbar-selected-tab))
+ (tabbar-scroll tabbar-tabsets-tabset 0)
+ (tabbar-set-template tabbar-tabsets-tabset nil)
+ tabbar-tabsets-tabset)
+
+;;; Faces
+;;
+(defface tabbar-default
+ '(
+ ;;(((class color grayscale) (background light))
+ ;; :inherit variable-pitch
+ ;; :height 0.8
+ ;; :foreground "gray50"
+ ;; :background "grey75"
+ ;; )
+ (((class color grayscale) (background dark))
+ :inherit variable-pitch
+ :height 0.8
+ :foreground "grey75"
+ :background "gray50"
+ )
+ (((class mono) (background light))
+ :inherit variable-pitch
+ :height 0.8
+ :foreground "black"
+ :background "white"
+ )
+ (((class mono) (background dark))
+ :inherit variable-pitch
+ :height 0.8
+ :foreground "white"
+ :background "black"
+ )
+ (t
+ :inherit variable-pitch
+ :height 0.8
+ :foreground "gray50"
+ :background "gray75"
+ ))
+ "Default face used in the tab bar."
+ :group 'tabbar)
+
+(defface tabbar-unselected
+ '((t
+ :inherit tabbar-default
+ :box (:line-width 1 :color "white" :style released-button)
+ ))
+ "Face used for unselected tabs."
+ :group 'tabbar)
+
+(defface tabbar-selected
+ '((t
+ :inherit tabbar-default
+ :box (:line-width 1 :color "white" :style pressed-button)
+ :foreground "blue"
+ ))
+ "Face used for the selected tab."
+ :group 'tabbar)
+
+(defface tabbar-highlight
+ '((t
+ :underline t
+ ))
+ "Face used to highlight a tab during mouse-overs."
+ :group 'tabbar)
+
+(defface tabbar-separator
+ '((t
+ :inherit tabbar-default
+ :height 0.1
+ ))
+ "Face used for separators between tabs."
+ :group 'tabbar)
+
+(defface tabbar-button
+ '((t
+ :inherit tabbar-default
+ :box (:line-width 1 :color "white" :style released-button)
+ :foreground "dark red"
+ ))
+ "Face used for tab bar buttons."
+ :group 'tabbar)
+
+(defface tabbar-button-highlight
+ '((t
+ :inherit tabbar-default
+ ))
+ "Face used to highlight a button during mouse-overs."
+ :group 'tabbar)
+
+(defcustom tabbar-background-color nil
+ "*Background color of the tab bar.
+By default, use the background color specified for the
+`tabbar-default' face (or inherited from another face), or the
+background color of the `default' face otherwise."
+ :group 'tabbar
+ :type '(choice (const :tag "Default" nil)
+ (color)))
+
+(defsubst tabbar-background-color ()
+ "Return the background color of the tab bar."
+ (or tabbar-background-color
+ (let* ((face 'tabbar-default)
+ (color (face-background face)))
+ (while (null color)
+ (or (facep (setq face (face-attribute face :inherit)))
+ (setq face 'default))
+ (setq color (face-background face)))
+ color)))
+
+;;; Buttons and separator look and feel
+;;
+(defconst tabbar-button-widget
+ '(cons
+ (cons :tag "Enabled"
+ (string)
+ (repeat :tag "Image"
+ :extra-offset 2
+ (restricted-sexp :tag "Spec"
+ :match-alternatives (listp))))
+ (cons :tag "Disabled"
+ (string)
+ (repeat :tag "Image"
+ :extra-offset 2
+ (restricted-sexp :tag "Spec"
+ :match-alternatives (listp))))
+ )
+ "Widget for editing a tab bar button.
+A button is specified as a pair (ENABLED-BUTTON . DISABLED-BUTTON),
+where ENABLED-BUTTON and DISABLED-BUTTON specify the value used when
+the button is respectively enabled and disabled. Each button value is
+a pair (STRING . IMAGE) where STRING is a string value, and IMAGE a
+list of image specifications.
+If IMAGE is non-nil, try to use that image, else use STRING.
+If only the ENABLED-BUTTON image is provided, a DISABLED-BUTTON image
+is derived from it.")
+
+;;; Home button
+;;
+(defvar tabbar-home-button-value nil
+ "Value of the home button.")
+
+(defconst tabbar-home-button-enabled-image
+ '((:type pbm :data "\
+P2 13 13 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0
+6 0 255 255 255 255 255 255 255 255 255 255 9 130 9 255 255 255 255
+255 255 255 255 255 255 26 130 26 255 255 255 255 255 255 255 0 9 26
+41 130 41 26 9 0 255 255 255 255 5 145 140 135 130 125 120 115 5 255
+255 255 255 0 9 26 41 130 41 26 9 0 255 255 255 255 255 255 255 26 130
+26 255 255 255 255 255 255 255 255 255 255 9 130 9 255 255 255 255 255
+255 255 255 255 255 0 6 0 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255
+"))
+ "Default image for the enabled home button.")
+
+(defconst tabbar-home-button-disabled-image
+ '((:type pbm :data "\
+P2 13 13 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 0 0 1 2 3 2 1 0 0 255 255 255 255 0 132 128 123 119 114 110
+106 0 255 255 255 255 0 0 1 2 3 2 1 0 0 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255
+"))
+ "Default image for the disabled home button.")
+
+(defcustom tabbar-home-button
+ (cons (cons "[o]" tabbar-home-button-enabled-image)
+ (cons "[x]" tabbar-home-button-disabled-image))
+ "The home button.
+The variable `tabbar-button-widget' gives details on this widget."
+ :group 'tabbar
+ :type tabbar-button-widget
+ :set '(lambda (variable value)
+ (custom-set-default variable value)
+ ;; Schedule refresh of button value.
+ (setq tabbar-home-button-value nil)))
+
+;;; Scroll left button
+;;
+(defvar tabbar-scroll-left-button-value nil
+ "Value of the scroll left button.")
+
+(defconst tabbar-scroll-left-button-enabled-image
+ '((:type pbm :data "\
+P2 13 13 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 128 16 48 255 255 255 255 255 255 255
+255 144 28 86 128 0 255 255 255 255 255 255 160 44 92 159 135 113 0
+255 255 255 255 160 44 97 165 144 129 120 117 0 255 255 176 44 98 175
+174 146 127 126 127 128 0 255 255 0 160 184 156 143 136 134 135 137
+138 0 255 255 176 32 67 144 146 144 145 146 148 149 0 255 255 255 255
+160 42 75 140 154 158 159 160 0 255 255 255 255 255 255 160 40 74 154
+170 171 0 255 255 255 255 255 255 255 255 160 41 82 163 0 255 255 255
+255 255 255 255 255 255 255 160 32 48 255 255 255 255 255 255 255 255
+255 255 255 255 255 255
+"))
+ "Default image for the enabled scroll left button.
+A disabled button image will be automatically build from it.")
+
+(defcustom tabbar-scroll-left-button
+ (cons (cons " <" tabbar-scroll-left-button-enabled-image)
+ (cons " =" nil))
+ "The scroll left button.
+The variable `tabbar-button-widget' gives details on this widget."
+ :group 'tabbar
+ :type tabbar-button-widget
+ :set '(lambda (variable value)
+ (custom-set-default variable value)
+ ;; Schedule refresh of button value.
+ (setq tabbar-scroll-left-button-value nil)))
+
+;;; Scroll right button
+;;
+(defvar tabbar-scroll-right-button-value nil
+ "Value of the scroll right button.")
+
+(defconst tabbar-scroll-right-button-enabled-image
+ '((:type pbm :data "\
+P2 13 13 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+48 32 160 255 255 255 255 255 255 255 255 255 255 44 161 71 32 160 255
+255 255 255 255 255 255 255 36 157 163 145 62 32 160 255 255 255 255
+255 255 30 128 133 137 142 124 50 32 160 255 255 255 255 29 120 121
+124 126 126 124 105 42 32 176 255 255 31 126 127 128 128 128 128 126
+124 89 32 255 255 33 134 135 136 137 137 138 119 49 32 176 255 255 34
+143 144 145 146 128 54 32 160 255 255 255 255 36 152 153 134 57 32 160
+255 255 255 255 255 255 38 141 60 32 160 255 255 255 255 255 255 255
+255 48 32 160 255 255 255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255
+"))
+ "Default image for the enabled scroll right button.
+A disabled button image will be automatically build from it.")
+
+(defcustom tabbar-scroll-right-button
+ (cons (cons " >" tabbar-scroll-right-button-enabled-image)
+ (cons " =" nil))
+ "The scroll right button.
+The variable `tabbar-button-widget' gives details on this widget."
+ :group 'tabbar
+ :type tabbar-button-widget
+ :set '(lambda (variable value)
+ (custom-set-default variable value)
+ ;; Schedule refresh of button value.
+ (setq tabbar-scroll-right-button-value nil)))
+
+;;; Separator
+;;
+(defconst tabbar-separator-widget
+ '(cons (choice (string)
+ (number :tag "Space width" 0.2))
+ (repeat :tag "Image"
+ :extra-offset 2
+ (restricted-sexp :tag "Spec"
+ :match-alternatives (listp))))
+ "Widget for editing a tab bar separator.
+A separator is specified as a pair (STRING-OR-WIDTH . IMAGE) where
+STRING-OR-WIDTH is a string value or a space width, and IMAGE a list
+of image specifications.
+If IMAGE is non-nil, try to use that image, else use STRING-OR-WIDTH.
+The value (\"\"), or (0) hide separators.")
+
+(defvar tabbar-separator-value nil
+ "Value of the separator used between tabs.")
+
+(defcustom tabbar-separator (list 0.2)
+ "Separator used between tabs.
+The variable `tabbar-separator-widget' gives details on this widget."
+ :group 'tabbar
+ :type tabbar-separator-widget
+ :set '(lambda (variable value)
+ (custom-set-default variable value)
+ ;; Schedule refresh of separator value.
+ (setq tabbar-separator-value nil)))
+
+;;; Images
+;;
+(defcustom tabbar-use-images t
+ "*Non-nil means to try to use images in tab bar.
+That is for buttons and separators."
+ :group 'tabbar
+ :type 'boolean
+ :set '(lambda (variable value)
+ (custom-set-default variable value)
+ ;; Schedule refresh of all buttons and separator values.
+ (setq tabbar-separator-value nil
+ tabbar-home-button-value nil
+ tabbar-scroll-left-button-value nil
+ tabbar-scroll-right-button-value nil)))
+
+(defsubst tabbar-find-image (specs)
+ "Find an image, choosing one of a list of image specifications.
+SPECS is a list of image specifications. See also `find-image'."
+ (when (and tabbar-use-images (display-images-p))
+ (condition-case nil
+ (find-image specs)
+ (error nil))))
+
+(defsubst tabbar-disable-image (image)
+ "From IMAGE, return a new image which looks disabled."
+ (setq image (copy-sequence image))
+ (setcdr image (plist-put (cdr image) :conversion 'disabled))
+ image)
+
+(defsubst tabbar-normalize-image (image &optional margin)
+ "Make IMAGE centered and transparent.
+If optional MARGIN is non-nil, it must be a number of pixels to add as
+an extra margin around the image."
+ (let ((plist (cdr image)))
+ (or (plist-get plist :ascent)
+ (setq plist (plist-put plist :ascent 'center)))
+ (or (plist-get plist :mask)
+ (setq plist (plist-put plist :mask '(heuristic t))))
+ (or (not (natnump margin))
+ (plist-get plist :margin)
+ (plist-put plist :margin margin))
+ (setcdr image plist))
+ image)
+
+;;; Button keymaps and callbacks
+;;
+(defun tabbar-make-mouse-keymap (callback)
+ "Return a keymap that call CALLBACK on mouse events.
+CALLBACK is passed the received mouse event."
+ (let ((keymap (make-sparse-keymap)))
+ ;; Pass mouse-1, mouse-2 and mouse-3 events to CALLBACK.
+ (define-key keymap [header-line down-mouse-1] 'ignore)
+ (define-key keymap [header-line mouse-1] callback)
+ (define-key keymap [header-line down-mouse-2] 'ignore)
+ (define-key keymap [header-line mouse-2] callback)
+ (define-key keymap [header-line down-mouse-3] 'ignore)
+ (define-key keymap [header-line mouse-3] callback)
+ keymap))
+
+(defsubst tabbar-make-mouse-event (&optional type)
+ "Return a mouse click event.
+Optional argument TYPE is a mouse-click event or one of the
+symbols `mouse-1', `mouse-2' or `mouse-3'.
+The default is `mouse-1'."
+ (if (tabbar-click-p type)
+ type
+ (list (or (memq type '(mouse-2 mouse-3)) 'mouse-1)
+ (or (event-start nil) ;; Emacs 21.4
+ (list (selected-window) (point) '(0 . 0) 0)))))
+
+;;; Buttons
+;;
+(defconst tabbar-default-button-keymap
+ (tabbar-make-mouse-keymap 'tabbar-select-button-callback)
+ "Default keymap of a button.")
+
+(defun tabbar-help-on-button (window object position)
+ "Return a help string or nil for none, for the button under the mouse.
+WINDOW is the window in which the help was found (unused).
+OBJECT is the button label under the mouse.
+POSITION is the position in that label.
+Call `tabbar-NAME-help-function' where NAME is the button name
+associated to OBJECT."
+ (let* ((name (get-text-property position 'tabbar-button object))
+ (funvar (and name
+ (intern-soft (format "tabbar-%s-help-function"
+ name)))))
+ (and (symbol-value funvar)
+ (funcall (symbol-value funvar)))))
+
+(defsubst tabbar-click-on-button (name &optional type)
+ "Handle a mouse click event on button NAME.
+Call `tabbar-select-NAME-function' with the received, or simulated
+mouse click event.
+Optional argument TYPE is a mouse click event type (see the function
+`tabbar-make-mouse-event' for details)."
+ (let ((funvar (intern-soft (format "tabbar-%s-function" name))))
+ (when (symbol-value funvar)
+ (funcall (symbol-value funvar) (tabbar-make-mouse-event type))
+ (tabbar-display-update))))
+
+(defun tabbar-select-button-callback (event)
+ "Handle a mouse EVENT on a button.
+Pass mouse click events on a button to `tabbar-click-on-button'."
+ (interactive "@e")
+ (when (tabbar-click-p event)
+ (let ((target (posn-string (event-start event))))
+ (tabbar-click-on-button
+ (get-text-property (cdr target) 'tabbar-button (car target))
+ event))))
+
+(defun tabbar-make-button-keymap (name)
+ "Return a keymap to handle mouse click events on button NAME."
+ (if (fboundp 'posn-string)
+ tabbar-default-button-keymap
+ (let ((event (make-symbol "event")))
+ (tabbar-make-mouse-keymap
+ `(lambda (,event)
+ (interactive "@e")
+ (and (tabbar-click-p ,event)
+ (tabbar-click-on-button ',name ,event)))))))
+
+;;; Button callbacks
+;;
+(defun tabbar-scroll-left (event)
+ "On mouse EVENT, scroll current tab set on left."
+ (when (eq (event-basic-type event) 'mouse-1)
+ (tabbar-scroll (tabbar-current-tabset) -1)))
+
+(defun tabbar-scroll-left-help ()
+ "Help string shown when mouse is over the scroll left button."
+ "mouse-1: scroll tabs left.")
+
+(defun tabbar-scroll-right (event)
+ "On mouse EVENT, scroll current tab set on right."
+ (when (eq (event-basic-type event) 'mouse-1)
+ (tabbar-scroll (tabbar-current-tabset) 1)))
+
+(defun tabbar-scroll-right-help ()
+ "Help string shown when mouse is over the scroll right button."
+ "mouse-1: scroll tabs right.")
+
+;;; Tabs
+;;
+(defconst tabbar-default-tab-keymap
+ (tabbar-make-mouse-keymap 'tabbar-select-tab-callback)
+ "Default keymap of a tab.")
+
+(defun tabbar-help-on-tab (window object position)
+ "Return a help string or nil for none, for the tab under the mouse.
+WINDOW is the window in which the help was found (unused).
+OBJECT is the tab label under the mouse.
+POSITION is the position in that label.
+Call `tabbar-help-on-tab-function' with the associated tab."
+ (when tabbar-help-on-tab-function
+ (let ((tab (get-text-property position 'tabbar-tab object)))
+ (funcall tabbar-help-on-tab-function tab))))
+
+(defsubst tabbar-click-on-tab (tab &optional type)
+ "Handle a mouse click event on tab TAB.
+Call `tabbar-select-tab-function' with the received, or simulated
+mouse click event, and TAB.
+Optional argument TYPE is a mouse click event type (see the function
+`tabbar-make-mouse-event' for details)."
+ (when tabbar-select-tab-function
+ (funcall tabbar-select-tab-function
+ (tabbar-make-mouse-event type) tab)
+ (tabbar-display-update)))
+
+(defun tabbar-select-tab-callback (event)
+ "Handle a mouse EVENT on a tab.
+Pass mouse click events on a tab to `tabbar-click-on-tab'."
+ (interactive "@e")
+ (when (tabbar-click-p event)
+ (let ((target (posn-string (event-start event))))
+ (tabbar-click-on-tab
+ (get-text-property (cdr target) 'tabbar-tab (car target))
+ event))))
+
+(defun tabbar-make-tab-keymap (tab)
+ "Return a keymap to handle mouse click events on TAB."
+ (if (fboundp 'posn-string)
+ tabbar-default-tab-keymap
+ (let ((event (make-symbol "event")))
+ (tabbar-make-mouse-keymap
+ `(lambda (,event)
+ (interactive "@e")
+ (and (tabbar-click-p ,event)
+ (tabbar-click-on-tab ',tab ,event)))))))
+
+;;; Tab bar construction
+;;
+(defun tabbar-button-label (name)
+ "Return a label for button NAME.
+That is a pair (ENABLED . DISABLED), where ENABLED and DISABLED are
+respectively the appearance of the button when enabled and disabled.
+They are propertized strings which could display images, as specified
+by the variable `tabbar-NAME-button'."
+ (let* ((btn (symbol-value
+ (intern-soft (format "tabbar-%s-button" name))))
+ (on (tabbar-find-image (cdar btn)))
+ (off (and on (tabbar-find-image (cddr btn)))))
+ (when on
+ (tabbar-normalize-image on 1)
+ (if off
+ (tabbar-normalize-image off 1)
+ ;; If there is no disabled button image, derive one from the
+ ;; button enabled image.
+ (setq off (tabbar-disable-image on))))
+ (cons
+ (propertize (or (caar btn) " ") 'display on)
+ (propertize (or (cadr btn) " ") 'display off))))
+
+(defun tabbar-line-button (name)
+ "Return the display representation of button NAME.
+That is, a propertized string used as an `header-line-format' template
+element."
+ (let ((label (if tabbar-button-label-function
+ (funcall tabbar-button-label-function name)
+ (cons name name))))
+ ;; Cache the display value of the enabled/disabled buttons in
+ ;; variables `tabbar-NAME-button-value'.
+ (set (intern (format "tabbar-%s-button-value" name))
+ (cons
+ (propertize (car label)
+ 'tabbar-button name
+ 'face 'tabbar-button
+ 'mouse-face 'tabbar-button-highlight
+ 'pointer 'hand
+ 'local-map (tabbar-make-button-keymap name)
+ 'help-echo 'tabbar-help-on-button)
+ (propertize (cdr label)
+ 'face 'tabbar-button
+ 'pointer 'arrow)))))
+
+(defun tabbar-line-separator ()
+ "Return the display representation of a tab bar separator.
+That is, a propertized string used as an `header-line-format' template
+element."
+ (let ((image (tabbar-find-image (cdr tabbar-separator))))
+ ;; Cache the separator display value in variable
+ ;; `tabbar-separator-value'.
+ (setq tabbar-separator-value
+ (cond
+ (image
+ (propertize " "
+ 'face 'tabbar-separator
+ 'pointer 'arrow
+ 'display (tabbar-normalize-image image)))
+ ((numberp (car tabbar-separator))
+ (propertize " "
+ 'face 'tabbar-separator
+ 'pointer 'arrow
+ 'display (list 'space
+ :width (car tabbar-separator))))
+ ((propertize (or (car tabbar-separator) " ")
+ 'face 'tabbar-separator
+ 'pointer 'arrow))))
+ ))
+
+(defsubst tabbar-line-buttons (tabset)
+ "Return a list of propertized strings for tab bar buttons.
+TABSET is the tab set used to choose the appropriate buttons."
+ (list
+ (if tabbar-home-function
+ (car tabbar-home-button-value)
+ (cdr tabbar-home-button-value))
+ (if (> (tabbar-start tabset) 0)
+ (car tabbar-scroll-left-button-value)
+ (cdr tabbar-scroll-left-button-value))
+ (if (< (tabbar-start tabset)
+ (1- (length (tabbar-tabs tabset))))
+ (car tabbar-scroll-right-button-value)
+ (cdr tabbar-scroll-right-button-value))
+ tabbar-separator-value))
+
+(defsubst tabbar-line-tab (tab)
+ "Return the display representation of tab TAB.
+That is, a propertized string used as an `header-line-format' template
+element.
+Call `tabbar-tab-label-function' to obtain a label for TAB."
+ (concat (propertize
+ (if tabbar-tab-label-function
+ (funcall tabbar-tab-label-function tab)
+ tab)
+ 'tabbar-tab tab
+ 'local-map (tabbar-make-tab-keymap tab)
+ 'help-echo 'tabbar-help-on-tab
+ 'mouse-face 'tabbar-highlight
+ 'face (if (tabbar-selected-p tab (tabbar-current-tabset))
+ 'tabbar-selected
+ 'tabbar-unselected)
+ 'pointer 'hand)
+ tabbar-separator-value))
+
+(defun tabbar-line-format (tabset)
+ "Return the `header-line-format' value to display TABSET."
+ (let* ((sel (tabbar-selected-tab tabset))
+ (tabs (tabbar-view tabset))
+ (padcolor (tabbar-background-color))
+ atsel elts)
+ ;; Initialize buttons and separator values.
+ (or tabbar-separator-value
+ (tabbar-line-separator))
+ (or tabbar-home-button-value
+ (tabbar-line-button 'home))
+ (or tabbar-scroll-left-button-value
+ (tabbar-line-button 'scroll-left))
+ (or tabbar-scroll-right-button-value
+ (tabbar-line-button 'scroll-right))
+ ;; Track the selected tab to ensure it is always visible.
+ (when tabbar--track-selected
+ (while (not (memq sel tabs))
+ (tabbar-scroll tabset -1)
+ (setq tabs (tabbar-view tabset)))
+ (while (and tabs (not atsel))
+ (setq elts (cons (tabbar-line-tab (car tabs)) elts)
+ atsel (eq (car tabs) sel)
+ tabs (cdr tabs)))
+ (setq elts (nreverse elts))
+ ;; At this point the selected tab is the last elt in ELTS.
+ ;; Scroll TABSET and ELTS until the selected tab becomes
+ ;; visible.
+ (with-temp-buffer
+ (let ((truncate-partial-width-windows nil)
+ (inhibit-modification-hooks t)
+ deactivate-mark ;; Prevent deactivation of the mark!
+ start)
+ (setq truncate-lines nil
+ buffer-undo-list t)
+ (apply 'insert (tabbar-line-buttons tabset))
+ (setq start (point))
+ (while (and (cdr elts) ;; Always show the selected tab!
+ (progn
+ (delete-region start (point-max))
+ (goto-char (point-max))
+ (apply 'insert elts)
+ (goto-char (point-min))
+ (> (vertical-motion 1) 0)))
+ (tabbar-scroll tabset 1)
+ (setq elts (cdr elts)))))
+ (setq elts (nreverse elts))
+ (setq tabbar--track-selected nil))
+ ;; Format remaining tabs.
+ (while tabs
+ (setq elts (cons (tabbar-line-tab (car tabs)) elts)
+ tabs (cdr tabs)))
+ ;; Cache and return the new tab bar.
+ (tabbar-set-template
+ tabset
+ (list (tabbar-line-buttons tabset)
+ (nreverse elts)
+ (propertize "%-"
+ 'face (list :background padcolor
+ :foreground padcolor)
+ 'pointer 'arrow)))
+ ))
+
+(defun tabbar-line ()
+ "Return the header line templates that represent the tab bar.
+Inhibit display of the tab bar in current window if any of the
+`tabbar-inhibit-functions' return non-nil."
+ (cond
+ ((run-hook-with-args-until-success 'tabbar-inhibit-functions)
+ ;; Don't show the tab bar.
+ (setq header-line-format nil))
+ ((tabbar-current-tabset t)
+ ;; When available, use a cached tab bar value, else recompute it.
+ (or (tabbar-template tabbar-current-tabset)
+ (tabbar-line-format tabbar-current-tabset)))))
+
+(defconst tabbar-header-line-format '(:eval (tabbar-line))
+ "The tab bar header line format.")
+
+(defun tabbar-default-inhibit-function ()
+ "Inhibit display of the tab bar in specified windows.
+That is dedicated windows, and `checkdoc' status windows."
+ (or (window-dedicated-p (selected-window))
+ (member (buffer-name)
+ (list " *Checkdoc Status*"
+ (if (boundp 'ispell-choices-buffer)
+ ispell-choices-buffer
+ "*Choices*")))))
+
+;;; Cyclic navigation through tabs
+;;
+(defun tabbar-cycle (&optional backward type)
+ "Cycle to the next available tab.
+The scope of the cyclic navigation through tabs is specified by the
+option `tabbar-cycle-scope'.
+If optional argument BACKWARD is non-nil, cycle to the previous tab
+instead.
+Optional argument TYPE is a mouse event type (see the function
+`tabbar-make-mouse-event' for details)."
+ (let* ((tabset (tabbar-current-tabset t))
+ (ttabset (tabbar-get-tabsets-tabset))
+ ;; If navigation through groups is requested, and there is
+ ;; only one group, navigate through visible tabs.
+ (cycle (if (and (eq tabbar-cycle-scope 'groups)
+ (not (cdr (tabbar-tabs ttabset))))
+ 'tabs
+ tabbar-cycle-scope))
+ selected tab)
+ (when tabset
+ (setq selected (tabbar-selected-tab tabset))
+ (cond
+ ;; Cycle through visible tabs only.
+ ((eq cycle 'tabs)
+ (setq tab (tabbar-tab-next tabset selected backward))
+ ;; When there is no tab after/before the selected one, cycle
+ ;; to the first/last visible tab.
+ (unless tab
+ (setq tabset (tabbar-tabs tabset)
+ tab (car (if backward (last tabset) tabset))))
+ )
+ ;; Cycle through tab groups only.
+ ((eq cycle 'groups)
+ (setq tab (tabbar-tab-next ttabset selected backward))
+ ;; When there is no group after/before the selected one, cycle
+ ;; to the first/last available group.
+ (unless tab
+ (setq tabset (tabbar-tabs ttabset)
+ tab (car (if backward (last tabset) tabset))))
+ )
+ (t
+ ;; Cycle through visible tabs then tab groups.
+ (setq tab (tabbar-tab-next tabset selected backward))
+ ;; When there is no visible tab after/before the selected one,
+ ;; cycle to the next/previous available group.
+ (unless tab
+ (setq tab (tabbar-tab-next ttabset selected backward))
+ ;; When there is no next/previous group, cycle to the
+ ;; first/last available group.
+ (unless tab
+ (setq tabset (tabbar-tabs ttabset)
+ tab (car (if backward (last tabset) tabset))))
+ ;; Select the first/last visible tab of the new group.
+ (setq tabset (tabbar-tabs (tabbar-tab-tabset tab))
+ tab (car (if backward (last tabset) tabset))))
+ ))
+ (tabbar-click-on-tab tab type))))
+
+;;;###autoload
+(defun tabbar-backward ()
+ "Select the previous available tab.
+Depend on the setting of the option `tabbar-cycle-scope'."
+ (interactive)
+ (tabbar-cycle t))
+
+;;;###autoload
+(defun tabbar-forward ()
+ "Select the next available tab.
+Depend on the setting of the option `tabbar-cycle-scope'."
+ (interactive)
+ (tabbar-cycle))
+
+;;;###autoload
+(defun tabbar-backward-group ()
+ "Go to selected tab in the previous available group."
+ (interactive)
+ (let ((tabbar-cycle-scope 'groups))
+ (tabbar-cycle t)))
+
+;;;###autoload
+(defun tabbar-forward-group ()
+ "Go to selected tab in the next available group."
+ (interactive)
+ (let ((tabbar-cycle-scope 'groups))
+ (tabbar-cycle)))
+
+;;;###autoload
+(defun tabbar-backward-tab ()
+ "Select the previous visible tab."
+ (interactive)
+ (let ((tabbar-cycle-scope 'tabs))
+ (tabbar-cycle t)))
+
+;;;###autoload
+(defun tabbar-forward-tab ()
+ "Select the next visible tab."
+ (interactive)
+ (let ((tabbar-cycle-scope 'tabs))
+ (tabbar-cycle)))
+
+;;; Button press commands
+;;
+(defsubst tabbar--mouse (number)
+ "Return a mouse button symbol from NUMBER.
+That is mouse-2, or mouse-3 when NUMBER is respectively 2, or 3.
+Return mouse-1 otherwise."
+ (cond ((eq number 2) 'mouse-2)
+ ((eq number 3) 'mouse-3)
+ ('mouse-1)))
+
+;;;###autoload
+(defun tabbar-press-home (&optional arg)
+ "Press the tab bar home button.
+That is, simulate a mouse click on that button.
+A numeric prefix ARG value of 2, or 3, respectively simulates a
+mouse-2, or mouse-3 click. The default is a mouse-1 click."
+ (interactive "p")
+ (tabbar-click-on-button 'home (tabbar--mouse arg)))
+
+;;;###autoload
+(defun tabbar-press-scroll-left (&optional arg)
+ "Press the tab bar scroll-left button.
+That is, simulate a mouse click on that button.
+A numeric prefix ARG value of 2, or 3, respectively simulates a
+mouse-2, or mouse-3 click. The default is a mouse-1 click."
+ (interactive "p")
+ (tabbar-click-on-button 'scroll-left (tabbar--mouse arg)))
+
+;;;###autoload
+(defun tabbar-press-scroll-right (&optional arg)
+ "Press the tab bar scroll-right button.
+That is, simulate a mouse click on that button.
+A numeric prefix ARG value of 2, or 3, respectively simulates a
+mouse-2, or mouse-3 click. The default is a mouse-1 click."
+ (interactive "p")
+ (tabbar-click-on-button 'scroll-right (tabbar--mouse arg)))
+
+;;; Mouse-wheel support
+;;
+(require 'mwheel)
+
+;;; Compatibility
+;;
+(defconst tabbar--mwheel-up-event
+ (symbol-value (if (boundp 'mouse-wheel-up-event)
+ 'mouse-wheel-up-event
+ 'mouse-wheel-up-button)))
+
+(defconst tabbar--mwheel-down-event
+ (symbol-value (if (boundp 'mouse-wheel-down-event)
+ 'mouse-wheel-down-event
+ 'mouse-wheel-down-button)))
+
+(defsubst tabbar--mwheel-key (event-type)
+ "Return a mouse wheel key symbol from EVENT-TYPE.
+When EVENT-TYPE is a symbol return it.
+When it is a button number, return symbol `mouse-<EVENT-TYPE>'."
+ (if (symbolp event-type)
+ event-type
+ (intern (format "mouse-%s" event-type))))
+
+(defsubst tabbar--mwheel-up-p (event)
+ "Return non-nil if EVENT is a mouse-wheel up event."
+ (let ((x (event-basic-type event)))
+ (if (eq 'mouse-wheel x)
+ (< (car (cdr (cdr event))) 0) ;; Emacs 21.3
+ ;; Emacs > 21.3
+ (eq x tabbar--mwheel-up-event))))
+
+;;; Basic commands
+;;
+;;;###autoload
+(defun tabbar-mwheel-backward (event)
+ "Select the previous available tab.
+EVENT is the mouse event that triggered this command.
+Mouse-enabled equivalent of the command `tabbar-backward'."
+ (interactive "@e")
+ (tabbar-cycle t event))
+
+;;;###autoload
+(defun tabbar-mwheel-forward (event)
+ "Select the next available tab.
+EVENT is the mouse event that triggered this command.
+Mouse-enabled equivalent of the command `tabbar-forward'."
+ (interactive "@e")
+ (tabbar-cycle nil event))
+
+;;;###autoload
+(defun tabbar-mwheel-backward-group (event)
+ "Go to selected tab in the previous available group.
+If there is only one group, select the previous visible tab.
+EVENT is the mouse event that triggered this command.
+Mouse-enabled equivalent of the command `tabbar-backward-group'."
+ (interactive "@e")
+ (let ((tabbar-cycle-scope 'groups))
+ (tabbar-cycle t event)))
+
+;;;###autoload
+(defun tabbar-mwheel-forward-group (event)
+ "Go to selected tab in the next available group.
+If there is only one group, select the next visible tab.
+EVENT is the mouse event that triggered this command.
+Mouse-enabled equivalent of the command `tabbar-forward-group'."
+ (interactive "@e")
+ (let ((tabbar-cycle-scope 'groups))
+ (tabbar-cycle nil event)))
+
+;;;###autoload
+(defun tabbar-mwheel-backward-tab (event)
+ "Select the previous visible tab.
+EVENT is the mouse event that triggered this command.
+Mouse-enabled equivalent of the command `tabbar-backward-tab'."
+ (interactive "@e")
+ (let ((tabbar-cycle-scope 'tabs))
+ (tabbar-cycle t event)))
+
+;;;###autoload
+(defun tabbar-mwheel-forward-tab (event)
+ "Select the next visible tab.
+EVENT is the mouse event that triggered this command.
+Mouse-enabled equivalent of the command `tabbar-forward-tab'."
+ (interactive "@e")
+ (let ((tabbar-cycle-scope 'tabs))
+ (tabbar-cycle nil event)))
+
+;;; Wrappers when there is only one generic mouse-wheel event
+;;
+;;;###autoload
+(defun tabbar-mwheel-switch-tab (event)
+ "Select the next or previous tab according to EVENT."
+ (interactive "@e")
+ (if (tabbar--mwheel-up-p event)
+ (tabbar-mwheel-forward-tab event)
+ (tabbar-mwheel-backward-tab event)))
+
+;;;###autoload
+(defun tabbar-mwheel-switch-group (event)
+ "Select the next or previous group of tabs according to EVENT."
+ (interactive "@e")
+ (if (tabbar--mwheel-up-p event)
+ (tabbar-mwheel-forward-group event)
+ (tabbar-mwheel-backward-group event)))
+
+;;; Minor modes
+;;
+(defsubst tabbar-mode-on-p ()
+ "Return non-nil if Tabbar mode is on."
+ (eq (default-value 'header-line-format)
+ tabbar-header-line-format))
+
+;;; Tabbar-Local mode
+;;
+(defvar tabbar--local-hlf nil)
+
+;;;###autoload
+(define-minor-mode tabbar-local-mode
+ "Toggle local display of the tab bar.
+With prefix argument ARG, turn on if positive, otherwise off.
+Returns non-nil if the new state is enabled.
+When turned on, if a local header line is shown, it is hidden to show
+the tab bar. The tab bar is locally hidden otherwise. When turned
+off, if a local header line is hidden or the tab bar is locally
+hidden, it is shown again. Signal an error if Tabbar mode is off."
+ :group 'tabbar
+ :global nil
+ (unless (tabbar-mode-on-p)
+ (error "Tabbar mode must be enabled"))
+;;; ON
+ (if tabbar-local-mode
+ (if (and (local-variable-p 'header-line-format)
+ header-line-format)
+ ;; A local header line exists, hide it to show the tab bar.
+ (progn
+ ;; Fail in case of an inconsistency because another local
+ ;; header line is already hidden.
+ (when (local-variable-p 'tabbar--local-hlf)
+ (error "Another local header line is already hidden"))
+ (set (make-local-variable 'tabbar--local-hlf)
+ header-line-format)
+ (kill-local-variable 'header-line-format))
+ ;; Otherwise hide the tab bar in this buffer.
+ (setq header-line-format nil))
+;;; OFF
+ (if (local-variable-p 'tabbar--local-hlf)
+ ;; A local header line is hidden, show it again.
+ (progn
+ (setq header-line-format tabbar--local-hlf)
+ (kill-local-variable 'tabbar--local-hlf))
+ ;; The tab bar is locally hidden, show it again.
+ (kill-local-variable 'header-line-format))))
+
+;;; Tabbar mode
+;;
+(defvar tabbar-prefix-key [(control ?c)]
+ "The common prefix key used in Tabbar mode.")
+
+(defvar tabbar-prefix-map
+ (let ((km (make-sparse-keymap)))
+ (define-key km [(control home)] 'tabbar-press-home)
+ (define-key km [(control left)] 'tabbar-backward)
+ (define-key km [(control right)] 'tabbar-forward)
+ (define-key km [(control up)] 'tabbar-backward-group)
+ (define-key km [(control down)] 'tabbar-forward-group)
+ (define-key km [(control prior)] 'tabbar-press-scroll-left)
+ (define-key km [(control next)] 'tabbar-press-scroll-right)
+ (define-key km [(control f10)] 'tabbar-local-mode)
+ km)
+ "The key bindings provided in Tabbar mode.")
+
+(defvar tabbar-mode-map
+ (let ((km (make-sparse-keymap)))
+ (define-key km tabbar-prefix-key tabbar-prefix-map)
+ km)
+ "Keymap to use in Tabbar mode.")
+
+(defvar tabbar--global-hlf nil)
+
+;;;###autoload
+(define-minor-mode tabbar-mode
+ "Toggle display of a tab bar in the header line.
+With prefix argument ARG, turn on if positive, otherwise off.
+Returns non-nil if the new state is enabled.
+
+\\{tabbar-mode-map}"
+ :group 'tabbar
+ :require 'tabbar
+ :global t
+ :keymap tabbar-mode-map
+ (if tabbar-mode
+;;; ON
+ (unless (tabbar-mode-on-p)
+ ;; Save current default value of `header-line-format'.
+ (setq tabbar--global-hlf (default-value 'header-line-format))
+ (tabbar-init-tabsets-store)
+ (setq-default header-line-format tabbar-header-line-format))
+;;; OFF
+ (when (tabbar-mode-on-p)
+ ;; Turn off Tabbar-Local mode globally.
+ (mapc #'(lambda (b)
+ (condition-case nil
+ (with-current-buffer b
+ (and tabbar-local-mode
+ (tabbar-local-mode -1)))
+ (error nil)))
+ (buffer-list))
+ ;; Restore previous `header-line-format'.
+ (setq-default header-line-format tabbar--global-hlf)
+ (tabbar-free-tabsets-store))
+ ))
+
+;;; Tabbar-Mwheel mode
+;;
+(defvar tabbar-mwheel-mode-map
+ (let ((km (make-sparse-keymap)))
+ (if (get 'mouse-wheel 'event-symbol-elements)
+ ;; Use one generic mouse wheel event
+ (define-key km [A-mouse-wheel]
+ 'tabbar-mwheel-switch-group)
+ ;; Use separate up/down mouse wheel events
+ (let ((up (tabbar--mwheel-key tabbar--mwheel-up-event))
+ (down (tabbar--mwheel-key tabbar--mwheel-down-event)))
+ (define-key km `[header-line ,down]
+ 'tabbar-mwheel-backward-group)
+ (define-key km `[header-line ,up]
+ 'tabbar-mwheel-forward-group)
+ (define-key km `[header-line (control ,down)]
+ 'tabbar-mwheel-backward-tab)
+ (define-key km `[header-line (control ,up)]
+ 'tabbar-mwheel-forward-tab)
+ (define-key km `[header-line (shift ,down)]
+ 'tabbar-mwheel-backward)
+ (define-key km `[header-line (shift ,up)]
+ 'tabbar-mwheel-forward)
+ ))
+ km)
+ "Keymap to use in Tabbar-Mwheel mode.")
+
+;;;###autoload
+(define-minor-mode tabbar-mwheel-mode
+ "Toggle use of the mouse wheel to navigate through tabs or groups.
+With prefix argument ARG, turn on if positive, otherwise off.
+Returns non-nil if the new state is enabled.
+
+\\{tabbar-mwheel-mode-map}"
+ :group 'tabbar
+ :require 'tabbar
+ :global t
+ :keymap tabbar-mwheel-mode-map
+ (when tabbar-mwheel-mode
+ (unless (and mouse-wheel-mode tabbar-mode)
+ (tabbar-mwheel-mode -1))))
+
+(defun tabbar-mwheel-follow ()
+ "Toggle Tabbar-Mwheel following Tabbar and Mouse-Wheel modes."
+ (tabbar-mwheel-mode (if (and mouse-wheel-mode tabbar-mode) 1 -1)))
+
+(add-hook 'tabbar-mode-hook 'tabbar-mwheel-follow)
+(add-hook 'mouse-wheel-mode-hook 'tabbar-mwheel-follow)
+
+;;; Buffer tabs
+;;
+(defgroup tabbar-buffer nil
+ "Display buffers in the tab bar."
+ :group 'tabbar)
+
+(defcustom tabbar-buffer-home-button
+ (cons (cons "[+]" tabbar-home-button-enabled-image)
+ (cons "[-]" tabbar-home-button-disabled-image))
+ "The home button displayed when showing buffer tabs.
+The enabled button value is displayed when showing tabs for groups of
+buffers, and the disabled button value is displayed when showing
+buffer tabs.
+The variable `tabbar-button-widget' gives details on this widget."
+ :group 'tabbar-buffer
+ :type tabbar-button-widget
+ :set '(lambda (variable value)
+ (custom-set-default variable value)
+ ;; Schedule refresh of button value.
+ (setq tabbar-home-button-value nil)))
+
+(defvar tabbar-buffer-list-function 'tabbar-buffer-list
+ "Function that returns the list of buffers to show in tabs.
+That function is called with no arguments and must return a list of
+buffers.")
+
+(defvar tabbar-buffer-groups-function 'tabbar-buffer-groups
+ "Function that gives the group names the current buffer belongs to.
+It must return a list of group names, or nil if the buffer has no
+group. Notice that it is better that a buffer belongs to one group.")
+
+(defun tabbar-buffer-list ()
+ "Return the list of buffers to show in tabs.
+Exclude buffers whose name starts with a space, when they are not
+visiting a file. The current buffer is always included."
+ (delq nil
+ (mapcar #'(lambda (b)
+ (cond
+ ;; Always include the current buffer.
+ ((eq (current-buffer) b) b)
+ ((buffer-file-name b) b)
+ ((char-equal ?\ (aref (buffer-name b) 0)) nil)
+ ((buffer-live-p b) b)))
+ (buffer-list))))
+
+(defun tabbar-buffer-mode-derived-p (mode parents)
+ "Return non-nil if MODE derives from a mode in PARENTS."
+ (let (derived)
+ (while (and (not derived) mode)
+ (if (memq mode parents)
+ (setq derived t)
+ (setq mode (get mode 'derived-mode-parent))))
+ derived))
+
+(defun tabbar-buffer-groups ()
+ "Return the list of group names the current buffer belongs to.
+Return a list of one element based on major mode."
+ (list
+ (cond
+ ((or (get-buffer-process (current-buffer))
+ ;; Check if the major mode derives from `comint-mode' or
+ ;; `compilation-mode'.
+ (tabbar-buffer-mode-derived-p
+ major-mode '(comint-mode compilation-mode)))
+ "Process"
+ )
+ ((member (buffer-name)
+ '("*scratch*" "*Messages*"))
+ "Common"
+ )
+ ((eq major-mode 'dired-mode)
+ "Dired"
+ )
+ ((memq major-mode
+ '(help-mode apropos-mode Info-mode Man-mode))
+ "Help"
+ )
+ ((memq major-mode
+ '(rmail-mode
+ rmail-edit-mode vm-summary-mode vm-mode mail-mode
+ mh-letter-mode mh-show-mode mh-folder-mode
+ gnus-summary-mode message-mode gnus-group-mode
+ gnus-article-mode score-mode gnus-browse-killed-mode))
+ "Mail"
+ )
+ (t
+ ;; Return `mode-name' if not blank, `major-mode' otherwise.
+ (if (and (stringp mode-name)
+ ;; Take care of preserving the match-data because this
+ ;; function is called when updating the header line.
+ (save-match-data (string-match "[^ ]" mode-name)))
+ mode-name
+ (symbol-name major-mode))
+ ))))
+
+;;; Group buffers in tab sets.
+;;
+(defvar tabbar--buffers nil)
+
+(defun tabbar-buffer-update-groups ()
+ "Update tab sets from groups of existing buffers.
+Return the the first group where the current buffer is."
+ (let ((bl (sort
+ (mapcar
+ #'(lambda (b)
+ (with-current-buffer b
+ (list (current-buffer)
+ (buffer-name)
+ (if tabbar-buffer-groups-function
+ (funcall tabbar-buffer-groups-function)
+ '("Common")))))
+ (and tabbar-buffer-list-function
+ (funcall tabbar-buffer-list-function)))
+ #'(lambda (e1 e2)
+ (string-lessp (nth 1 e1) (nth 1 e2))))))
+ ;; If the cache has changed, update the tab sets.
+ (unless (equal bl tabbar--buffers)
+ ;; Add new buffers, or update changed ones.
+ (dolist (e bl)
+ (dolist (g (nth 2 e))
+ (let ((tabset (tabbar-get-tabset g)))
+ (if tabset
+ (unless (equal e (assq (car e) tabbar--buffers))
+ ;; This is a new buffer, or a previously existing
+ ;; buffer that has been renamed, or moved to another
+ ;; group. Update the tab set, and the display.
+ (tabbar-add-tab tabset (car e) t)
+ (tabbar-set-template tabset nil))
+ (tabbar-make-tabset g (car e))))))
+ ;; Remove tabs for buffers not found in cache or moved to other
+ ;; groups, and remove empty tabsets.
+ (mapc 'tabbar-delete-tabset
+ (tabbar-map-tabsets
+ #'(lambda (tabset)
+ (dolist (tab (tabbar-tabs tabset))
+ (let ((e (assq (tabbar-tab-value tab) bl)))
+ (or (and e (memq tabset
+ (mapcar 'tabbar-get-tabset
+ (nth 2 e))))
+ (tabbar-delete-tab tab))))
+ ;; Return empty tab sets
+ (unless (tabbar-tabs tabset)
+ tabset))))
+ ;; The new cache becomes the current one.
+ (setq tabbar--buffers bl)))
+ ;; Return the first group the current buffer belongs to.
+ (car (nth 2 (assq (current-buffer) tabbar--buffers))))
+
+;;; Tab bar callbacks
+;;
+(defvar tabbar--buffer-show-groups nil)
+
+(defsubst tabbar-buffer-show-groups (flag)
+ "Set display of tabs for groups of buffers to FLAG."
+ (setq tabbar--buffer-show-groups flag
+ ;; Redisplay the home button.
+ tabbar-home-button-value nil))
+
+(defun tabbar-buffer-tabs ()
+ "Return the buffers to display on the tab bar, in a tab set."
+ (let ((tabset (tabbar-get-tabset (tabbar-buffer-update-groups))))
+ (tabbar-select-tab-value (current-buffer) tabset)
+ (when tabbar--buffer-show-groups
+ (setq tabset (tabbar-get-tabsets-tabset))
+ (tabbar-select-tab-value (current-buffer) tabset))
+ tabset))
+
+(defun tabbar-buffer-button-label (name)
+ "Return a label for button NAME.
+That is a pair (ENABLED . DISABLED), where ENABLED and DISABLED are
+respectively the appearance of the button when enabled and disabled.
+They are propertized strings which could display images, as specified
+by the variable `tabbar-button-label'.
+When NAME is 'home, return a different ENABLED button if showing tabs
+or groups. Call the function `tabbar-button-label' otherwise."
+ (let ((lab (tabbar-button-label name)))
+ (when (eq name 'home)
+ (let* ((btn tabbar-buffer-home-button)
+ (on (tabbar-find-image (cdar btn)))
+ (off (tabbar-find-image (cddr btn))))
+ ;; When `tabbar-buffer-home-button' does not provide a value,
+ ;; default to the enabled value of `tabbar-home-button'.
+ (if on
+ (tabbar-normalize-image on 1)
+ (setq on (get-text-property 0 'display (car lab))))
+ (if off
+ (tabbar-normalize-image off 1)
+ (setq off (get-text-property 0 'display (car lab))))
+ (setcar lab
+ (if tabbar--buffer-show-groups
+ (propertize (or (caar btn) (car lab)) 'display on)
+ (propertize (or (cadr btn) (car lab)) 'display off)))
+ ))
+ lab))
+
+(defun tabbar-buffer-tab-label (tab)
+ "Return a label for TAB.
+That is, a string used to represent it on the tab bar."
+ (let ((label (if tabbar--buffer-show-groups
+ (format "[%s]" (tabbar-tab-tabset tab))
+ (format "%s" (tabbar-tab-value tab)))))
+ ;; Unless the tab bar auto scrolls to keep the selected tab
+ ;; visible, shorten the tab label to keep as many tabs as possible
+ ;; in the visible area of the tab bar.
+ (if tabbar-auto-scroll-flag
+ label
+ (tabbar-shorten
+ label (max 1 (/ (window-width)
+ (length (tabbar-view
+ (tabbar-current-tabset)))))))))
+
+(defun tabbar-buffer-help-on-tab (tab)
+ "Return the help string shown when mouse is onto TAB."
+ (if tabbar--buffer-show-groups
+ (let* ((tabset (tabbar-tab-tabset tab))
+ (tab (tabbar-selected-tab tabset)))
+ (format "mouse-1: switch to buffer %S in group [%s]"
+ (buffer-name (tabbar-tab-value tab)) tabset))
+ (format "mouse-1: switch to buffer %S\n\
+mouse-2: pop to buffer, mouse-3: delete other windows"
+ (buffer-name (tabbar-tab-value tab)))
+ ))
+
+(defun tabbar-buffer-select-tab (event tab)
+ "On mouse EVENT, select TAB."
+ (let ((mouse-button (event-basic-type event))
+ (buffer (tabbar-tab-value tab)))
+ (cond
+ ((eq mouse-button 'mouse-2)
+ (pop-to-buffer buffer t))
+ ((eq mouse-button 'mouse-3)
+ (delete-other-windows))
+ (t
+ (switch-to-buffer buffer)))
+ ;; Don't show groups.
+ (tabbar-buffer-show-groups nil)
+ ))
+
+(defun tabbar-buffer-click-on-home (event)
+ "Handle a mouse click EVENT on the tab bar home button.
+mouse-1, toggle the display of tabs for groups of buffers.
+mouse-3, close the current buffer."
+ (let ((mouse-button (event-basic-type event)))
+ (cond
+ ((eq mouse-button 'mouse-1)
+ (tabbar-buffer-show-groups (not tabbar--buffer-show-groups)))
+ ((eq mouse-button 'mouse-3)
+ (kill-buffer nil))
+ )))
+
+(defun tabbar-buffer-help-on-home ()
+ "Return the help string shown when mouse is onto the toggle button."
+ (concat
+ (if tabbar--buffer-show-groups
+ "mouse-1: show buffers in selected group"
+ "mouse-1: show groups of buffers")
+ ", mouse-3: close current buffer"))
+
+(defun tabbar-buffer-track-killed ()
+ "Hook run just before actually killing a buffer.
+In Tabbar mode, try to switch to a buffer in the current tab bar,
+after the current buffer has been killed. Try first the buffer in tab
+after the current one, then the buffer in tab before. On success, put
+the sibling buffer in front of the buffer list, so it will be selected
+first."
+ (and (eq header-line-format tabbar-header-line-format)
+ (eq tabbar-current-tabset-function 'tabbar-buffer-tabs)
+ (eq (current-buffer) (window-buffer (selected-window)))
+ (let ((bl (tabbar-tab-values (tabbar-current-tabset)))
+ (b (current-buffer))
+ found sibling)
+ (while (and bl (not found))
+ (if (eq b (car bl))
+ (setq found t)
+ (setq sibling (car bl)))
+ (setq bl (cdr bl)))
+ (when (and (setq sibling (or (car bl) sibling))
+ (buffer-live-p sibling))
+ ;; Move sibling buffer in front of the buffer list.
+ (save-current-buffer
+ (switch-to-buffer sibling))))))
+
+;;; Tab bar buffer setup
+;;
+(defun tabbar-buffer-init ()
+ "Initialize tab bar buffer data.
+Run as `tabbar-init-hook'."
+ (setq tabbar--buffers nil
+ tabbar--buffer-show-groups nil
+ tabbar-current-tabset-function 'tabbar-buffer-tabs
+ tabbar-tab-label-function 'tabbar-buffer-tab-label
+ tabbar-select-tab-function 'tabbar-buffer-select-tab
+ tabbar-help-on-tab-function 'tabbar-buffer-help-on-tab
+ tabbar-button-label-function 'tabbar-buffer-button-label
+ tabbar-home-function 'tabbar-buffer-click-on-home
+ tabbar-home-help-function 'tabbar-buffer-help-on-home
+ )
+ (add-hook 'kill-buffer-hook 'tabbar-buffer-track-killed))
+
+(defun tabbar-buffer-quit ()
+ "Quit tab bar buffer.
+Run as `tabbar-quit-hook'."
+ (setq tabbar--buffers nil
+ tabbar--buffer-show-groups nil
+ tabbar-current-tabset-function nil
+ tabbar-tab-label-function nil
+ tabbar-select-tab-function nil
+ tabbar-help-on-tab-function nil
+ tabbar-button-label-function nil
+ tabbar-home-function nil
+ tabbar-home-help-function nil
+ )
+ (remove-hook 'kill-buffer-hook 'tabbar-buffer-track-killed))
+
+(add-hook 'tabbar-init-hook 'tabbar-buffer-init)
+(add-hook 'tabbar-quit-hook 'tabbar-buffer-quit)
+
+(provide 'tabbar)
+
+(run-hooks 'tabbar-load-hook)
+
+;;; tabbar.el ends here
diff --git a/emacs.d/themes/color-theme-example.el b/emacs.d/themes/color-theme-example.el
new file mode 100644
index 0000000..f73b4f6
--- /dev/null
+++ b/emacs.d/themes/color-theme-example.el
@@ -0,0 +1,22 @@
+(eval-when-compile
+ (require 'color-theme))
+
+(defun color-theme-example ()
+ "Example theme. Carbon copy of color-theme-gnome contributed by Jonadab."
+ (interactive)
+ (color-theme-install
+ '(color-theme-example
+ ((foreground-color . "wheat")
+ (background-color . "darkslategrey")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (region ((t (:foreground "cyan" :background "dark cyan"))))
+ (underline ((t (:foreground "yellow" :underline t))))
+ (modeline ((t (:foreground "dark cyan" :background "wheat"))))
+ (modeline-buffer-id ((t (:foreground "dark cyan" :background "wheat"))))
+ (modeline-mousable ((t (:foreground "dark cyan" :background "wheat"))))
+ (modeline-mousable-minor-mode ((t (:foreground "dark cyan" :background "wheat"))))
+ (italic ((t (:foreground "dark red" :italic t))))
+ (bold-italic ((t (:foreground "dark red" :bold t :italic t))))
+ (font-lock-comment-face ((t (:foreground "Firebrick"))))
+ (bold ((t (:bold)))))))
diff --git a/emacs.d/themes/color-theme-library.el b/emacs.d/themes/color-theme-library.el
new file mode 100644
index 0000000..d194708
--- /dev/null
+++ b/emacs.d/themes/color-theme-library.el
@@ -0,0 +1,13539 @@
+;;; color-theme-library.el --- The real color theme functions
+
+;; Copyright (C) 2005, 2006 Xavier Maillard <zedek@gnu.org>
+;; Copyright (C) 2005, 2006 Brian Palmer <bpalmer@gmail.com>
+
+;; Version: 0.0.9
+;; Keywords: faces
+;; Author: Brian Palmer, Xavier Maillard
+;; Maintainer: Xavier Maillard <zedek@gnu.org>
+;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ColorTheme
+
+;; This file is not (YET) part of GNU Emacs.
+
+;; This 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 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 GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+;; MA 02111-1307, USA.
+
+;; Code:
+(eval-when-compile
+ (require 'color-theme))
+
+(defun color-theme-gnome ()
+ "Wheat on darkslategrey scheme.
+From one version of Emacs in RH6 and Gnome, modified by Jonadab."
+ (interactive)
+ (color-theme-install
+ '(color-theme-gnome
+ ((foreground-color . "wheat")
+ (background-color . "darkslategrey")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (region ((t (:foreground "cyan" :background "dark cyan"))))
+ (underline ((t (:foreground "yellow" :underline t))))
+ (modeline ((t (:foreground "dark cyan" :background "wheat"))))
+ (modeline-buffer-id ((t (:foreground "dark cyan" :background "wheat"))))
+ (modeline-mousable ((t (:foreground "dark cyan" :background "wheat"))))
+ (modeline-mousable-minor-mode ((t (:foreground "dark cyan" :background "wheat"))))
+ (italic ((t (:foreground "dark red" :italic t))))
+ (bold-italic ((t (:foreground "dark red" :bold t :italic t))))
+ (font-lock-comment-face ((t (:foreground "Firebrick"))))
+ (bold ((t (:bold)))))))
+
+(defun color-theme-blue-gnus ()
+ "Color theme for gnus and message faces only.
+This is intended for other color themes to use (eg. `color-theme-gnome2'
+and `color-theme-blue-sea')."
+ (interactive)
+ (color-theme-install
+ '(color-theme-blue-gnus
+ nil
+ (gnus-cite-attribution-face ((t (:lforeground "lemon chiffon" :bold t))))
+ (gnus-cite-face-1 ((t (:foreground "LightSalmon"))))
+ (gnus-cite-face-2 ((t (:foreground "Khaki"))))
+ (gnus-cite-face-3 ((t (:foreground "Coral"))))
+ (gnus-cite-face-4 ((t (:foreground "yellow green"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "bisque"))))
+ (gnus-cite-face-7 ((t (:foreground "peru"))))
+ (gnus-cite-face-8 ((t (:foreground "light coral"))))
+ (gnus-cite-face-9 ((t (:foreground "plum"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "White"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "White"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "light cyan"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "light cyan"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "LightBlue"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "LightBlue"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "Aquamarine"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "Aquamarine"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "White"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "White"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "light cyan"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "light cyan"))))
+ (gnus-group-news-3-empty-face ((t (:foreground "LightBlue"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "LightBlue"))))
+ (gnus-group-news-4-empty-face ((t (:foreground "Aquamarine"))))
+ (gnus-group-news-4-face ((t (:bold t :foreground "Aquamarine"))))
+ (gnus-group-news-5-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-5-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (gnus-group-news-6-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-6-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (gnus-group-news-low-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (gnus-header-content-face ((t (:foreground "LightSkyBlue3"))))
+ (gnus-header-from-face ((t (:bold t :foreground "light cyan"))))
+ (gnus-header-name-face ((t (:bold t :foreground "LightBlue"))))
+ (gnus-header-newsgroups-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "light cyan"))))
+ (gnus-signature-face ((t (:foreground "Grey"))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-summary-cancelled-face ((t (:background "Black" :foreground "Yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "Aquamarine"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "LightSalmon"))))
+ (gnus-summary-high-unread-face ((t (:bold t :foreground "beige"))))
+ (gnus-summary-low-ancient-face ((t (:foreground "DimGray"))))
+ (gnus-summary-low-read-face ((t (:foreground "slate gray"))))
+ (gnus-summary-low-ticked-face ((t (:foreground "Pink"))))
+ (gnus-summary-low-unread-face ((t (:foreground "LightGray"))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-summary-normal-read-face ((t (:foreground "Aquamarine"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "LightSalmon"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:background "DarkSlateBlue"))))
+ (message-cited-text-face ((t (:foreground "LightSalmon"))))
+ (message-header-cc-face ((t (:foreground "light cyan"))))
+ (message-header-name-face ((t (:foreground "LightBlue"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (message-header-other-face ((t (:foreground "MediumAquamarine"))))
+ (message-header-subject-face ((t (:bold t :foreground "light cyan"))))
+ (message-header-to-face ((t (:bold t :foreground "light cyan"))))
+ (message-header-xheader-face ((t (:foreground "MediumAquamarine"))))
+ (message-separator-face ((t (:foreground "chocolate")))))))
+
+(defun color-theme-dark-gnus ()
+ "Color theme for gnus and message faces only.
+This is intended for other color themes to use
+\(eg. `color-theme-late-night')."
+ (interactive)
+ (color-theme-install
+ '(color-theme-blue-gnus
+ nil
+ (gnus-cite-attribution-face ((t (:foreground "#bbb"))))
+ (gnus-cite-face-1 ((t (:foreground "#aaa"))))
+ (gnus-cite-face-2 ((t (:foreground "#aaa"))))
+ (gnus-cite-face-3 ((t (:foreground "#aaa"))))
+ (gnus-cite-face-4 ((t (:foreground "#aaa"))))
+ (gnus-cite-face-5 ((t (:foreground "#aaa"))))
+ (gnus-cite-face-6 ((t (:foreground "#aaa"))))
+ (gnus-cite-face-7 ((t (:foreground "#aaa"))))
+ (gnus-cite-face-8 ((t (:foreground "#aaa"))))
+ (gnus-cite-face-9 ((t (:foreground "#aaa"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:foreground "#ccc"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "#999"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "#999"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "#999"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "#999"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "#888"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "#888"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "#777"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "#777"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "#999"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "#999"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "#888"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "#888"))))
+ (gnus-group-news-3-empty-face ((t (:foreground "#777"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "#777"))))
+ (gnus-group-news-4-empty-face ((t (:foreground "#666"))))
+ (gnus-group-news-4-face ((t (:bold t :foreground "#666"))))
+ (gnus-group-news-5-empty-face ((t (:foreground "#666"))))
+ (gnus-group-news-5-face ((t (:bold t :foreground "#666"))))
+ (gnus-group-news-6-empty-face ((t (:foreground "#666"))))
+ (gnus-group-news-6-face ((t (:bold t :foreground "#666"))))
+ (gnus-group-news-low-empty-face ((t (:foreground "#666"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "#666"))))
+ (gnus-header-content-face ((t (:foreground "#888"))))
+ (gnus-header-from-face ((t (:bold t :foreground "#888"))))
+ (gnus-header-name-face ((t (:bold t :foreground "#777"))))
+ (gnus-header-newsgroups-face ((t (:bold t :foreground "#777"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "#999"))))
+ (gnus-signature-face ((t (:foreground "#444"))))
+ (gnus-splash-face ((t (:foreground "#ccc"))))
+ (gnus-summary-cancelled-face ((t (:background "#555" :foreground "#000"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "#555"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "#666"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "#777"))))
+ (gnus-summary-high-unread-face ((t (:bold t :foreground "#888"))))
+ (gnus-summary-low-ancient-face ((t (:foreground "#444"))))
+ (gnus-summary-low-read-face ((t (:foreground "#555"))))
+ (gnus-summary-low-ticked-face ((t (:foreground "#666"))))
+ (gnus-summary-low-unread-face ((t (:foreground "#777"))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "#555"))))
+ (gnus-summary-normal-read-face ((t (:foreground "#666"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "#777"))))
+ (gnus-summary-normal-unread-face ((t (:foreground "#888"))))
+ (gnus-summary-selected-face ((t (:background "#333"))))
+ (message-cited-text-face ((t (:foreground "#aaa"))))
+ (message-header-cc-face ((t (:foreground "#888"))))
+ (message-header-name-face ((t (:bold t :foreground "#777"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "#777"))))
+ (message-header-other-face ((t (:foreground "#666"))))
+ (message-header-subject-face ((t (:bold t :foreground "#999"))))
+ (message-header-to-face ((t (:bold t :foreground "#777"))))
+ (message-header-xheader-face ((t (:foreground "#666"))))
+ (message-separator-face ((t (:foreground "#999")))))))
+
+(defun color-theme-blue-eshell ()
+ "Color theme for eshell faces only.
+This is intended for other color themes to use (eg. `color-theme-gnome2')."
+ (interactive)
+ (color-theme-install
+ '(color-theme-blue-eshell
+ nil
+ (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
+ (eshell-ls-backup-face ((t (:foreground "Grey"))))
+ (eshell-ls-clutter-face ((t (:foreground "DimGray"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "MediumSlateBlue"))))
+ (eshell-ls-executable-face ((t (:foreground "Coral"))))
+ (eshell-ls-missing-face ((t (:foreground "black"))))
+ (eshell-ls-picture-face ((t (:foreground "Violet")))) ; non-standard face
+ (eshell-ls-product-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-readonly-face ((t (:foreground "Aquamarine"))))
+ (eshell-ls-special-face ((t (:foreground "Gold"))))
+ (eshell-ls-symlink-face ((t (:foreground "White"))))
+ (eshell-ls-text-face ((t (:foreground "medium aquamarine")))) ; non-standard face
+ (eshell-ls-todo-face ((t (:bold t :foreground "aquamarine")))) ; non-standard face
+ (eshell-ls-unreadable-face ((t (:foreground "DimGray"))))
+ (eshell-prompt-face ((t (:foreground "powder blue")))))))
+
+(defun color-theme-salmon-font-lock ()
+ "Color theme for font-lock faces only.
+This is intended for other color themes to use (eg. `color-theme-gnome2')."
+ (interactive)
+ (color-theme-install
+ '(color-theme-salmon-font-lock
+ nil
+ (font-lock-builtin-face ((t (:bold t :foreground "PaleGreen"))))
+ (font-lock-comment-face ((t (:foreground "LightBlue"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-doc-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "Aquamarine"))))
+ (font-lock-keyword-face ((t (:foreground "Salmon"))))
+ (font-lock-preprocessor-face ((t (:foreground "Salmon"))))
+ (font-lock-reference-face ((t (:foreground "pale green"))))
+ (font-lock-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-type-face ((t (:bold t :foreground "YellowGreen"))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "Aquamarine"))))
+ (font-lock-warning-face ((t (:bold t :foreground "red")))))))
+
+(defun color-theme-dark-font-lock ()
+ "Color theme for font-lock faces only.
+This is intended for other color themes to use (eg. `color-theme-late-night')."
+ (interactive)
+ (color-theme-install
+ '(color-theme-dark-font-lock
+ nil
+ (font-lock-builtin-face ((t (:bold t :foreground "#777"))))
+ (font-lock-comment-face ((t (:foreground "#555"))))
+ (font-lock-constant-face ((t (:foreground "#777"))))
+ (font-lock-doc-string-face ((t (:foreground "#777"))))
+ (font-lock-doc-face ((t (:foreground "#777"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "#777"))))
+ (font-lock-keyword-face ((t (:foreground "#777"))))
+ (font-lock-preprocessor-face ((t (:foreground "#777"))))
+ (font-lock-reference-face ((t (:foreground "#777"))))
+ (font-lock-string-face ((t (:foreground "#777"))))
+ (font-lock-type-face ((t (:bold t))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "#888"))))
+ (font-lock-warning-face ((t (:bold t :foreground "#999")))))))
+
+(defun color-theme-dark-info ()
+ "Color theme for info, help and apropos faces.
+This is intended for other color themes to use (eg. `color-theme-late-night')."
+ (interactive)
+ (color-theme-install
+ '(color-theme-dark-info
+ nil
+ (info-header-node ((t (:foreground "#666"))))
+ (info-header-xref ((t (:foreground "#666"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-menu-header ((t (:bold t :foreground "#666"))))
+ (info-node ((t (:bold t :foreground "#888"))))
+ (info-xref ((t (:bold t :foreground "#777")))))))
+
+(defun color-theme-gnome2 ()
+ "Wheat on darkslategrey scheme.
+`color-theme-gnome' started it all.
+
+This theme supports standard faces, font-lock, eshell, info, message,
+gnus, custom, widget, woman, diary, cperl, bbdb, and erc. This theme
+includes faces for Emacs and XEmacs.
+
+The theme does not support w3 faces because w3 faces can be controlled
+by your default style sheet.
+
+This is what you should put in your .Xdefaults file, if you want to
+change the colors of the menus in Emacs 20 as well:
+
+emacs*Background: DarkSlateGray
+emacs*Foreground: Wheat"
+ (interactive)
+ (color-theme-blue-gnus)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-blue-erc)
+ (color-theme-blue-eshell)
+ (color-theme-salmon-font-lock)
+ (color-theme-salmon-diff)
+ (color-theme-install
+ '(color-theme-gnome2
+ ((foreground-color . "wheat")
+ (background-color . "darkslategrey")
+ (mouse-color . "Grey")
+ (cursor-color . "LightGray")
+ (border-color . "black")
+ (background-mode . dark))
+ ((apropos-keybinding-face . underline)
+ (apropos-label-face . italic)
+ (apropos-match-face . secondary-selection)
+ (apropos-property-face . bold-italic)
+ (apropos-symbol-face . info-xref)
+ (goto-address-mail-face . message-header-to-face)
+ (goto-address-mail-mouse-face . secondary-selection)
+ (goto-address-url-face . info-xref)
+ (goto-address-url-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bbdb-company ((t (:foreground "pale green"))))
+ (bbdb-name ((t (:bold t :foreground "pale green"))))
+ (bbdb-field-name ((t (:foreground "medium sea green"))))
+ (bbdb-field-value ((t (:foreground "dark sea green"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t :foreground "beige"))))
+ (calendar-today-face ((t (:underline t))))
+ (comint-highlight-prompt ((t (:foreground "medium aquamarine"))))
+ (cperl-array-face ((t (:foreground "Yellow"))))
+ (cperl-hash-face ((t (:foreground "White"))))
+ (cperl-nonoverridable-face ((t (:foreground "SkyBlue"))))
+ (custom-button-face ((t (:underline t :foreground "MediumSlateBlue"))))
+ (custom-documentation-face ((t (:foreground "Grey"))))
+ (custom-group-tag-face ((t (:foreground "MediumAquamarine"))))
+ (custom-state-face ((t (:foreground "LightSalmon"))))
+ (custom-variable-tag-face ((t (:foreground "Aquamarine"))))
+ (diary-face ((t (:foreground "IndianRed"))))
+ (dired-face-directory ((t (:bold t :foreground "sky blue"))))
+ (dired-face-permissions ((t (:foreground "aquamarine"))))
+ (dired-face-flagged ((t (:foreground "tomato"))))
+ (dired-face-marked ((t (:foreground "light salmon"))))
+ (dired-face-executable ((t (:foreground "green yellow"))))
+ (fringe ((t (:background "darkslategrey"))))
+ (highlight ((t (:background "PaleGreen" :foreground "DarkGreen"))))
+ (highline-face ((t (:background "SeaGreen"))))
+ (holiday-face ((t (:background "DimGray"))))
+ (hyper-apropos-hyperlink ((t (:bold t :foreground "DodgerBlue1"))))
+ (hyper-apropos-documentation ((t (:foreground "LightSalmon"))))
+ (info-header-xref ((t (:foreground "DodgerBlue1" :bold t))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:underline t :bold t :foreground "DodgerBlue1"))))
+ (info-xref ((t (:bold t :foreground "DodgerBlue1"))))
+ (isearch ((t (:background "sea green"))))
+ (italic ((t (:italic t))))
+ (menu ((t (:foreground "wheat" :background "darkslategrey"))))
+ (modeline ((t (:background "dark olive green" :foreground "wheat"))))
+ (modeline-buffer-id ((t (:background "dark olive green" :foreground "beige"))))
+ (modeline-mousable ((t (:background "dark olive green" :foreground "yellow green"))))
+ (modeline-mousable-minor-mode ((t (:background "dark olive green" :foreground "wheat"))))
+ (region ((t (:background "dark cyan" :foreground "cyan"))))
+ (secondary-selection ((t (:background "Aquamarine" :foreground "SlateBlue"))))
+ (show-paren-match-face ((t (:bold t :background "Aquamarine" :foreground "steel blue"))))
+ (show-paren-mismatch-face ((t (:background "Red" :foreground "White"))))
+ (underline ((t (:underline t))))
+ (widget-field-face ((t (:foreground "LightBlue"))))
+ (widget-inactive-face ((t (:foreground "DimGray"))))
+ (widget-single-line-field-face ((t (:foreground "LightBlue"))))
+ (w3m-anchor-face ((t (:bold t :foreground "DodgerBlue1"))))
+ (w3m-arrived-anchor-face ((t (:bold t :foreground "DodgerBlue3"))))
+ (w3m-header-line-location-title-face ((t (:foreground "beige" :background "dark olive green"))))
+ (w3m-header-line-location-content-face ((t (:foreground "wheat" :background "dark olive green"))))
+ (woman-bold-face ((t (:bold t))))
+ (woman-italic-face ((t (:foreground "beige"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))
+ (zmacs-region ((t (:background "dark cyan" :foreground "cyan"))))))))
+
+(defun color-theme-simple-1 ()
+ "Black background.
+Doesn't mess with most faces, but does turn on dark background mode."
+ (interactive)
+ (color-theme-install
+ '(color-theme-simple-1
+ ((foreground-color . "white")
+ (background-color . "black")
+ (cursor-color . "indian red")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (modeline ((t (:foreground "black" :background "white"))))
+ (modeline-buffer-id ((t (:foreground "black" :background "white"))))
+ (modeline-mousable ((t (:foreground "black" :background "white"))))
+ (modeline-mousable-minor-mode ((t (:foreground "black" :background "white"))))
+ (underline ((t (:underline t))))
+ (region ((t (:background "grey")))))))
+
+(defun color-theme-jonadabian ()
+ "Dark blue background.
+Supports standard faces, font-lock, highlight-changes, widget and
+custom."
+ (interactive)
+ (color-theme-install
+ '(color-theme-jonadabian
+ ((foreground-color . "#CCBB77")
+ (cursor-color . "medium turquoise")
+ (background-color . "#000055")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (modeline ((t (:foreground "cyan" :background "#007080"))))
+ (modeline-buffer-id ((t (:foreground "cyan" :background "#007080"))))
+ (modeline-mousable ((t (:foreground "cyan" :background "#007080"))))
+ (modeline-mousable-minor-mode ((t (:foreground "cyan" :background "#007080"))))
+ (underline ((t (:underline t))))
+ (region ((t (:background "#004080"))))
+ (font-lock-keyword-face ((t (:foreground "#00BBBB"))))
+ (font-lock-comment-face ((t (:foreground "grey50" :bold t :italic t))))
+ (font-lock-string-face ((t (:foreground "#10D010"))))
+ (font-lock-constant-face ((t (:foreground "indian red"))))
+ (highlight-changes-face ((t (:background "navy"))))
+ (highlight-changes-delete-face ((t (:foreground "red" :background "navy"))))
+ (widget-field-face ((t (:foreground "black" :background "grey35"))))
+ (widget-inactive-face ((t (:foreground "gray"))))
+ (custom-button-face ((t (:foreground "yellow" :background "dark blue"))))
+ (custom-state-face ((t (:foreground "mediumaquamarine"))))
+ (custom-face-tag-face ((t (:foreground "goldenrod" :underline t))))
+ (custom-documentation-face ((t (:foreground "#10D010"))))
+ (custom-set-face ((t (:foreground "#2020D0")))))))
+
+(defun color-theme-ryerson ()
+ "White on midnightblue scheme.
+Used at Ryerson Polytechnic University in the Electronic Engineering department."
+ (interactive)
+ (color-theme-install
+ '(color-theme-ryerson
+ ((foreground-color . "white")
+ (background-color . "midnightblue")
+ (cursor-color . "red")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (modeline ((t (:foreground "black" :background "slategray3"))))
+ (modeline-buffer-id ((t (:foreground "black" :background "slategray3"))))
+ (modeline-mousable ((t (:foreground "black" :background "slategray3"))))
+ (modeline-mousable-minor-mode ((t (:foreground "black" :background "slategray3"))))
+ (underline ((t (:underline t))))
+ (region ((t (:foreground "black" :background "slategray3")))))))
+
+(defun color-theme-wheat ()
+ "Default colors on a wheat background.
+Calls the standard color theme function `color-theme-standard' in order
+to reset all faces."
+ (interactive)
+ (color-theme-standard)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-install
+ '(color-theme-wheat
+ ((background-color . "Wheat"))))))
+
+(defun color-theme-standard ()
+ "Emacs default colors.
+If you are missing standard faces in this theme, please notify the maintainer."
+ (interactive)
+ ;; Note that some of the things that make up a color theme are
+ ;; actually variable settings!
+ (color-theme-install
+ '(color-theme-standard
+ ((foreground-color . "black")
+ (background-color . "white")
+ (mouse-color . "black")
+ (cursor-color . "black")
+ (border-color . "black")
+ (background-mode . light))
+ ((Man-overstrike-face . bold)
+ (Man-underline-face . underline)
+ (apropos-keybinding-face . underline)
+ (apropos-label-face . italic)
+ (apropos-match-face . secondary-selection)
+ (apropos-property-face . bold-italic)
+ (apropos-symbol-face . bold)
+ (goto-address-mail-face . italic)
+ (goto-address-mail-mouse-face . secondary-selection)
+ (goto-address-url-face . bold)
+ (goto-address-url-mouse-face . highlight)
+ (help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:bold t :italic t))))
+ (calendar-today-face ((t (:underline t))))
+ (cperl-array-face ((t (:foreground "Blue" :background "lightyellow2" :bold t))))
+ (cperl-hash-face ((t (:foreground "Red" :background "lightyellow2" :bold t :italic t))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:foreground "white" :background "blue"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:foreground "blue" :underline t))))
+ (custom-group-tag-face-1 ((t (:foreground "red" :underline t))))
+ (custom-invalid-face ((t (:foreground "yellow" :background "red"))))
+ (custom-modified-face ((t (:foreground "white" :background "blue"))))
+ (custom-rogue-face ((t (:foreground "pink" :background "black"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:foreground "blue" :background "white"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:bold t :underline t))))
+ (custom-variable-tag-face ((t (:foreground "blue" :underline t))))
+ (diary-face ((t (:foreground "red"))))
+ (ediff-current-diff-face-A ((t (:foreground "firebrick" :background "pale green"))))
+ (ediff-current-diff-face-Ancestor ((t (:foreground "Black" :background "VioletRed"))))
+ (ediff-current-diff-face-B ((t (:foreground "DarkOrchid" :background "Yellow"))))
+ (ediff-current-diff-face-C ((t (:foreground "Navy" :background "Pink"))))
+ (ediff-even-diff-face-A ((t (:foreground "Black" :background "light grey"))))
+ (ediff-even-diff-face-Ancestor ((t (:foreground "White" :background "Grey"))))
+ (ediff-even-diff-face-B ((t (:foreground "White" :background "Grey"))))
+ (ediff-even-diff-face-C ((t (:foreground "Black" :background "light grey"))))
+ (ediff-fine-diff-face-A ((t (:foreground "Navy" :background "sky blue"))))
+ (ediff-fine-diff-face-Ancestor ((t (:foreground "Black" :background "Green"))))
+ (ediff-fine-diff-face-B ((t (:foreground "Black" :background "cyan"))))
+ (ediff-fine-diff-face-C ((t (:foreground "Black" :background "Turquoise"))))
+ (ediff-odd-diff-face-A ((t (:foreground "White" :background "Grey"))))
+ (ediff-odd-diff-face-Ancestor ((t (:foreground "Black" :background "light grey"))))
+ (ediff-odd-diff-face-B ((t (:foreground "Black" :background "light grey"))))
+ (ediff-odd-diff-face-C ((t (:foreground "White" :background "Grey"))))
+ (eshell-ls-archive-face ((t (:foreground "Orchid" :bold t))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:foreground "OrangeRed" :bold t))))
+ (eshell-ls-directory-face ((t (:foreground "Blue" :bold t))))
+ (eshell-ls-executable-face ((t (:foreground "ForestGreen" :bold t))))
+ (eshell-ls-missing-face ((t (:foreground "Red" :bold t))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:foreground "Magenta" :bold t))))
+ (eshell-ls-symlink-face ((t (:foreground "DarkCyan" :bold t))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:foreground "Red" :bold t))))
+ (eshell-test-failed-face ((t (:foreground "OrangeRed" :bold t))))
+ (eshell-test-ok-face ((t (:foreground "Green" :bold t))))
+ (excerpt ((t (:italic t))))
+ (fixed ((t (:bold t))))
+ (flyspell-duplicate-face ((t (:foreground "Gold3" :bold t :underline t))))
+ (flyspell-incorrect-face ((t (:foreground "OrangeRed" :bold t :underline t))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:foreground "Firebrick"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-function-name-face ((t (:foreground "Blue"))))
+ (font-lock-keyword-face ((t (:foreground "Purple"))))
+ (font-lock-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-type-face ((t (:foreground "ForestGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-warning-face ((t (:foreground "Red" :bold t))))
+ (fringe ((t (:background "grey95"))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:bold t :italic t))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t))))
+ (gnus-emphasis-underline-bold-italic ((t (:bold t :italic t :underline t))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:foreground "DeepPink3" :bold t))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:foreground "HotPink3" :bold t))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:foreground "magenta4" :bold t))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:foreground "DeepPink4" :bold t))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:foreground "ForestGreen" :bold t))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:foreground "CadetBlue4" :bold t))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:foreground "DarkGreen" :bold t))))
+ (gnus-header-content-face ((t (:foreground "indianred4" :italic t))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:foreground "MidnightBlue" :italic t))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-signature-face ((t (:italic t))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-summary-cancelled-face ((t (:foreground "yellow" :background "black"))))
+ (gnus-summary-high-ancient-face ((t (:foreground "RoyalBlue" :bold t))))
+ (gnus-summary-high-read-face ((t (:foreground "DarkGreen" :bold t))))
+ (gnus-summary-high-ticked-face ((t (:foreground "firebrick" :bold t))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:foreground "RoyalBlue" :italic t))))
+ (gnus-summary-low-read-face ((t (:foreground "DarkGreen" :italic t))))
+ (gnus-summary-low-ticked-face ((t (:foreground "firebrick" :italic t))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (highlight-changes-delete-face ((t (:foreground "red" :underline t))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highline-face ((t (:background "paleturquoise"))))
+ (holiday-face ((t (:background "pink"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:bold t :italic t))))
+ (info-xref ((t (:bold t))))
+ (italic ((t (:italic t))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:foreground "blue4" :bold t :italic t))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:foreground "navy blue" :bold t))))
+ (message-header-to-face ((t (:foreground "MidnightBlue" :bold t))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:foreground "white" :background "black"))))
+ (modeline-buffer-id ((t (:foreground "white" :background "black"))))
+ (modeline-mousable ((t (:foreground "white" :background "black"))))
+ (modeline-mousable-minor-mode ((t (:foreground "white" :background "black"))))
+ (region ((t (:background "gray"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:foreground "white" :background "purple"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-bold ((t (:bold t))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-green ((t (:foreground "green"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-red ((t (:foreground "red"))))
+ (term-redbg ((t (:background "red"))))
+ (term-underline ((t (:underline t))))
+ (term-white ((t (:foreground "white"))))
+ (term-whitebg ((t (:background "white"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (underline ((t (:underline t))))
+ (vcursor ((t (:foreground "blue" :background "cyan" :underline t))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-prompt-face ((t (:foreground "Red" :bold t))))
+ (vhdl-font-lock-reserved-words-face ((t (:foreground "Orange" :bold t))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:foreground "Blue" :underline t))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:foreground "DarkGoldenrod" :underline t))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:foreground "ForestGreen" :underline t))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:foreground "Brown" :underline t))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:foreground "Grey50" :underline t))))
+ (viper-minibuffer-emacs-face ((t (:foreground "Black" :background "darkseagreen2"))))
+ (viper-minibuffer-insert-face ((t (:foreground "Black" :background "pink"))))
+ (viper-minibuffer-vi-face ((t (:foreground "DarkGreen" :background "grey"))))
+ (viper-replace-overlay-face ((t (:foreground "Black" :background "darkseagreen2"))))
+ (viper-search-face ((t (:foreground "Black" :background "khaki"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85")))))))
+
+(defun color-theme-fischmeister ()
+ "The light colors on a grey blackground.
+Sebastian Fischmeister <sfischme@nexus.lzk.tuwien.ac.at>"
+ (interactive)
+ (color-theme-install
+ '(color-theme-fischmeister
+ ((foreground-color . "black")
+ (background-color . "gray80")
+ (mouse-color . "red")
+ (cursor-color . "yellow")
+ (border-color . "black")
+ (background-mode . light))
+ (default ((t (nil))))
+ (modeline ((t (:foreground "gray80" :background "black"))))
+ (modeline-buffer-id ((t (:foreground "gray80" :background "black"))))
+ (modeline-mousable ((t (:foreground "gray80" :background "black"))))
+ (modeline-mousable-minor-mode ((t (:foreground "gray80" :background "black"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (bold ((t (:bold t))))
+ (italic ((t (:italic t))))
+ (bold-italic ((t (:bold t :italic t))))
+ (region ((t (:background "gray"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (underline ((t (:underline t))))
+ (show-paren-match-face ((t (:foreground "yellow" :background "darkgreen"))))
+ (show-paren-mismatch-face ((t (:foreground "white" :background "red"))))
+ (font-lock-comment-face ((t (:foreground "FireBrick" :bold t :italic t))))
+ (font-lock-string-face ((t (:foreground "DarkSlateBlue" :italic t))))
+ (font-lock-keyword-face ((t (:foreground "navy"))))
+ (font-lock-builtin-face ((t (:foreground "white"))))
+ (font-lock-function-name-face ((t (:foreground "Blue"))))
+ (font-lock-variable-name-face ((t (:foreground "Darkblue"))))
+ (font-lock-type-face ((t (:foreground "darkgreen"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-warning-face ((t (:foreground "Orchid" :bold t))))
+ (font-lock-reference-face ((t (:foreground "SteelBlue")))))))
+
+(defun color-theme-sitaramv-solaris ()
+ "White on a midnight blue background. Lots of yellow and orange.
+Includes faces for font-lock, widget, custom, speedbar, message, gnus,
+eshell."
+ (interactive)
+ (color-theme-install
+ '(color-theme-sitaramv-solaris
+ ((foreground-color . "white")
+ (background-color . "MidnightBlue")
+ (mouse-color . "yellow")
+ (cursor-color . "magenta2")
+ (border-color . "black")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (modeline ((t (:foreground "black" :background "gold2"))))
+ (modeline-buffer-id ((t (:foreground "black" :background "gold2"))))
+ (modeline-mousable ((t (:foreground "black" :background "gold2"))))
+ (modeline-mousable-minor-mode ((t (:foreground "black" :background "gold2"))))
+ (highlight ((t (:foreground "black" :background "Aquamarine"))))
+ (bold ((t (:bold t))))
+ (italic ((t (:italic t))))
+ (bold-italic ((t (:bold t :italic t))))
+ (region ((t (:foreground "black" :background "snow3"))))
+ (secondary-selection ((t (:foreground "black" :background "aquamarine"))))
+ (underline ((t (:underline t))))
+ (lazy-highlight-face ((t (:foreground "yellow"))))
+ (font-lock-comment-face ((t (:foreground "orange" :italic t))))
+ (font-lock-string-face ((t (:foreground "orange"))))
+ (font-lock-keyword-face ((t (:foreground "green"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-function-name-face ((t (:foreground "cyan" :bold t))))
+ (font-lock-variable-name-face ((t (:foreground "white"))))
+ (font-lock-type-face ((t (:foreground "cyan"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-warning-face ((t (:foreground "Pink" :bold t))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (custom-invalid-face ((t (:foreground "yellow" :background "red"))))
+ (custom-rogue-face ((t (:foreground "pink" :background "black"))))
+ (custom-modified-face ((t (:foreground "white" :background "blue"))))
+ (custom-set-face ((t (:foreground "blue" :background "white"))))
+ (custom-changed-face ((t (:foreground "white" :background "blue"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-button-face ((t (nil))))
+ (custom-documentation-face ((t (nil))))
+ (custom-state-face ((t (:foreground "lime green"))))
+ (custom-variable-tag-face ((t (:foreground "light blue" :underline t))))
+ (custom-variable-button-face ((t (:bold t :underline t))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face-1 ((t (:foreground "pink" :underline t))))
+ (custom-group-tag-face ((t (:foreground "light blue" :underline t))))
+ (speedbar-button-face ((t (:foreground "green3"))))
+ (speedbar-file-face ((t (:foreground "cyan"))))
+ (speedbar-directory-face ((t (:foreground "light blue"))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-highlight-face ((t (:background "sea green"))))
+ (font-lock-doc-string-face ((t (:foreground "Plum1" :bold t))))
+ (font-lock-exit-face ((t (:foreground "green"))))
+ (ff-paths-non-existant-file-face ((t (:foreground "NavyBlue" :bold t))))
+ (show-paren-match-face ((t (:background "red"))))
+ (show-paren-mismatch-face ((t (:foreground "white" :background "purple"))))
+ (message-header-to-face ((t (:foreground "green2" :bold t))))
+ (message-header-cc-face ((t (:foreground "LightGoldenrod" :bold t))))
+ (message-header-subject-face ((t (:foreground "green3"))))
+ (message-header-newsgroups-face ((t (:foreground "yellow" :bold t :italic t))))
+ (message-header-other-face ((t (:foreground "Salmon"))))
+ (message-header-name-face ((t (:foreground "green3"))))
+ (message-header-xheader-face ((t (:foreground "GreenYellow"))))
+ (message-separator-face ((t (:foreground "Tan"))))
+ (message-cited-text-face ((t (:foreground "Gold"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:foreground "PaleTurquoise" :bold t))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-2-face ((t (:foreground "turquoise" :bold t))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-low-face ((t (:foreground "DarkTurquoise" :bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-mail-1-face ((t (:foreground "aquamarine1" :bold t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-2-face ((t (:foreground "aquamarine2" :bold t))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-3-face ((t (:foreground "aquamarine3" :bold t))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-low-face ((t (:foreground "aquamarine4" :bold t))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-summary-cancelled-face ((t (:foreground "yellow" :background "black"))))
+ (gnus-summary-high-ticked-face ((t (:foreground "pink" :bold t))))
+ (gnus-summary-low-ticked-face ((t (:foreground "pink" :italic t))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-high-ancient-face ((t (:foreground "SkyBlue" :bold t))))
+ (gnus-summary-low-ancient-face ((t (:foreground "SkyBlue" :italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-high-read-face ((t (:foreground "PaleGreen" :bold t))))
+ (gnus-summary-low-read-face ((t (:foreground "PaleGreen" :italic t))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (eshell-ls-directory-face ((t (:foreground "SkyBlue" :bold t))))
+ (eshell-ls-symlink-face ((t (:foreground "Cyan" :bold t))))
+ (eshell-ls-executable-face ((t (:foreground "Green" :bold t))))
+ (eshell-ls-readonly-face ((t (:foreground "Pink"))))
+ (eshell-ls-unreadable-face ((t (:foreground "DarkGrey"))))
+ (eshell-ls-special-face ((t (:foreground "Magenta" :bold t))))
+ (eshell-ls-missing-face ((t (:foreground "Red" :bold t))))
+ (eshell-ls-archive-face ((t (:foreground "Orchid" :bold t))))
+ (eshell-ls-backup-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-product-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-clutter-face ((t (:foreground "OrangeRed" :bold t))))
+ (eshell-prompt-face ((t (:foreground "Pink" :bold t))))
+ (term-default-fg ((t (nil))))
+ (term-default-bg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-bold ((t (:bold t))))
+ (term-underline ((t (:underline t))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-black ((t (:foreground "black"))))
+ (term-red ((t (:foreground "red"))))
+ (term-green ((t (:foreground "green"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-white ((t (:foreground "white"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-redbg ((t (:background "red"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-whitebg ((t (:background "white"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t))))
+ (gnus-emphasis-bold-italic ((t (:bold t :italic t))))
+ (gnus-emphasis-underline-bold-italic ((t (:bold t :italic t :underline t))))
+ (gnus-emphasis-highlight-words ((t (:foreground "yellow" :background "black"))))
+ (gnus-signature-face ((t (:italic t))))
+ (gnus-header-from-face ((t (:foreground "spring green"))))
+ (gnus-header-subject-face ((t (:foreground "yellow" :bold t))))
+ (gnus-header-newsgroups-face ((t (:foreground "SeaGreen3" :bold t :italic t))))
+ (gnus-header-name-face ((t (:foreground "pink"))))
+ (gnus-header-content-face ((t (:foreground "lime green" :italic t))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:foreground "light blue"))))
+ (gnus-cite-face-2 ((t (:foreground "light cyan"))))
+ (gnus-cite-face-3 ((t (:foreground "light yellow"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise")))))))
+
+(defun color-theme-sitaramv-nt ()
+ "Black foreground on white background.
+Includes faces for font-lock, widget, custom, speedbar."
+ (interactive)
+ (color-theme-install
+ '(color-theme-sitaramv-nt
+ ((foreground-color . "black")
+ (background-color . "white")
+ (mouse-color . "sienna3")
+ (cursor-color . "HotPink")
+ (border-color . "Blue")
+ (background-mode . light))
+ (default ((t (nil))))
+ (modeline ((t (:foreground "black" :background "gold2"))))
+ (modeline-buffer-id ((t (:foreground "black" :background "gold2"))))
+ (modeline-mousable ((t (:foreground "black" :background "gold2"))))
+ (modeline-mousable-minor-mode ((t (:foreground "black" :background "gold2"))))
+ (highlight ((t (:foreground "black" :background "darkseagreen2"))))
+ (bold ((t (:bold t))))
+ (italic ((t (:italic t))))
+ (bold-italic ((t (:bold t :italic t))))
+ (region ((t (:foreground "black" :background "snow3"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (underline ((t (:underline t))))
+ (lazy-highlight-face ((t (:foreground "dark magenta" :bold t))))
+ (font-lock-comment-face ((t (:foreground "ForestGreen" :italic t))))
+ (font-lock-string-face ((t (:foreground "red"))))
+ (font-lock-keyword-face ((t (:foreground "blue" :bold t))))
+ (font-lock-builtin-face ((t (:foreground "black"))))
+ (font-lock-function-name-face ((t (:foreground "dark magenta" :bold t))))
+ (font-lock-variable-name-face ((t (:foreground "black"))))
+ (font-lock-type-face ((t (:foreground "blue"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-warning-face ((t (:foreground "Red" :bold t))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (custom-invalid-face ((t (:foreground "yellow" :background "red"))))
+ (custom-rogue-face ((t (:foreground "pink" :background "black"))))
+ (custom-modified-face ((t (:foreground "white" :background "blue"))))
+ (custom-set-face ((t (:foreground "blue" :background "white"))))
+ (custom-changed-face ((t (:foreground "white" :background "blue"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-button-face ((t (nil))))
+ (custom-documentation-face ((t (nil))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-tag-face ((t (:foreground "blue" :underline t))))
+ (custom-variable-button-face ((t (:bold t :underline t))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face-1 ((t (:foreground "red" :underline t))))
+ (custom-group-tag-face ((t (:foreground "blue" :underline t))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (ff-paths-non-existant-file-face ((t (:foreground "NavyBlue" :bold t))))
+ (show-paren-match-face ((t (:background "light blue"))))
+ (show-paren-mismatch-face ((t (:foreground "white" :background "purple")))))))
+
+(defun color-theme-billw ()
+ "Cornsilk on black.
+Includes info, diary, font-lock, eshell, sgml, message, gnus,
+widget, custom, latex, ediff."
+ (interactive)
+ (color-theme-install
+ '(color-theme-billw
+ ((foreground-color . "cornsilk")
+ (background-color . "black")
+ (mouse-color . "black")
+ (cursor-color . "white")
+ (border-color . "black")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (modeline ((t (:foreground "black" :background "wheat"))))
+ (modeline-buffer-id ((t (:foreground "black" :background "wheat"))))
+ (modeline-mousable ((t (:foreground "black" :background "wheat"))))
+ (modeline-mousable-minor-mode ((t (:foreground "black" :background "wheat"))))
+ (highlight ((t (:foreground "wheat" :background "darkslategray"))))
+ (bold ((t (:bold t))))
+ (italic ((t (:italic t))))
+ (bold-italic ((t (:bold t :italic t))))
+ (region ((t (:background "dimgray"))))
+ (secondary-selection ((t (:background "deepskyblue4"))))
+ (underline ((t (:underline t))))
+ (info-node ((t (:foreground "yellow" :bold t :italic t))))
+ (info-menu-5 ((t (:underline t))))
+ (info-xref ((t (:foreground "yellow" :bold t))))
+ (diary-face ((t (:foreground "orange"))))
+ (calendar-today-face ((t (:underline t))))
+ (holiday-face ((t (:background "red"))))
+ (show-paren-match-face ((t (:background "deepskyblue4"))))
+ (show-paren-mismatch-face ((t (:foreground "white" :background "red"))))
+ (font-lock-comment-face ((t (:foreground "gold"))))
+ (font-lock-string-face ((t (:foreground "orange"))))
+ (font-lock-keyword-face ((t (:foreground "cyan1"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-function-name-face ((t (:foreground "mediumspringgreen"))))
+ (font-lock-variable-name-face ((t (:foreground "light salmon"))))
+ (font-lock-type-face ((t (:foreground "yellow1"))))
+ (font-lock-constant-face ((t (:foreground "salmon"))))
+ (font-lock-warning-face ((t (:foreground "gold" :bold t))))
+ (blank-space-face ((t (:background "LightGray"))))
+ (blank-tab-face ((t (:foreground "black" :background "cornsilk"))))
+ (highline-face ((t (:background "gray35"))))
+ (eshell-ls-directory-face ((t (:foreground "green" :bold t))))
+ (eshell-ls-symlink-face ((t (:foreground "Cyan" :bold t))))
+ (eshell-ls-executable-face ((t (:foreground "orange" :bold t))))
+ (eshell-ls-readonly-face ((t (:foreground "gray"))))
+ (eshell-ls-unreadable-face ((t (:foreground "DarkGrey"))))
+ (eshell-ls-special-face ((t (:foreground "Magenta" :bold t))))
+ (eshell-ls-missing-face ((t (:foreground "Red" :bold t))))
+ (eshell-ls-archive-face ((t (:foreground "Orchid" :bold t))))
+ (eshell-ls-backup-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-product-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-clutter-face ((t (:foreground "blue" :bold t))))
+ (sgml-start-tag-face ((t (:foreground "mediumspringgreen"))))
+ (custom-button-face ((t (:foreground "white"))))
+ (sgml-ignored-face ((t (:foreground "gray20" :background "gray60"))))
+ (sgml-doctype-face ((t (:foreground "orange"))))
+ (sgml-sgml-face ((t (:foreground "yellow"))))
+ (vc-annotate-face-0046FF ((t (:foreground "wheat" :background "black"))))
+ (custom-documentation-face ((t (:foreground "white"))))
+ (sgml-end-tag-face ((t (:foreground "greenyellow"))))
+ (linemenu-face ((t (:background "gray30"))))
+ (sgml-entity-face ((t (:foreground "gold"))))
+ (message-header-to-face ((t (:foreground "floral white" :bold t))))
+ (message-header-cc-face ((t (:foreground "ivory"))))
+ (message-header-subject-face ((t (:foreground "papaya whip" :bold t))))
+ (message-header-newsgroups-face ((t (:foreground "lavender blush" :bold t :italic t))))
+ (message-header-other-face ((t (:foreground "pale turquoise"))))
+ (message-header-name-face ((t (:foreground "light sky blue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-separator-face ((t (:foreground "sandy brown"))))
+ (message-cited-text-face ((t (:foreground "plum1"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:foreground "white" :bold t))))
+ (gnus-group-news-1-empty-face ((t (:foreground "white"))))
+ (gnus-group-news-2-face ((t (:foreground "lightcyan" :bold t))))
+ (gnus-group-news-2-empty-face ((t (:foreground "lightcyan"))))
+ (gnus-group-news-3-face ((t (:foreground "tan" :bold t))))
+ (gnus-group-news-3-empty-face ((t (:foreground "tan"))))
+ (gnus-group-news-4-face ((t (:foreground "white" :bold t))))
+ (gnus-group-news-4-empty-face ((t (:foreground "white"))))
+ (gnus-group-news-5-face ((t (:foreground "wheat" :bold t))))
+ (gnus-group-news-5-empty-face ((t (:foreground "wheat"))))
+ (gnus-group-news-6-face ((t (:foreground "tan" :bold t))))
+ (gnus-group-news-6-empty-face ((t (:foreground "tan"))))
+ (gnus-group-news-low-face ((t (:foreground "DarkTurquoise" :bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-mail-1-face ((t (:foreground "white" :bold t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-mail-2-face ((t (:foreground "lightcyan" :bold t))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "lightcyan"))))
+ (gnus-group-mail-3-face ((t (:foreground "tan" :bold t))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "tan"))))
+ (gnus-group-mail-low-face ((t (:foreground "aquamarine4" :bold t))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-summary-selected-face ((t (:background "deepskyblue4" :underline t))))
+ (gnus-summary-cancelled-face ((t (:foreground "black" :background "gray"))))
+ (gnus-summary-high-ticked-face ((t (:foreground "gray70" :bold t))))
+ (gnus-summary-low-ticked-face ((t (:foreground "gray70" :bold t))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "gray70" :bold t))))
+ (gnus-summary-high-ancient-face ((t (:foreground "SkyBlue" :bold t))))
+ (gnus-summary-low-ancient-face ((t (:foreground "SkyBlue" :italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-high-read-face ((t (:foreground "PaleGreen" :bold t))))
+ (gnus-summary-low-read-face ((t (:foreground "PaleGreen" :italic t))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-splash-face ((t (:foreground "gold"))))
+ (font-latex-bold-face ((t (nil))))
+ (font-latex-italic-face ((t (nil))))
+ (font-latex-math-face ((t (nil))))
+ (font-latex-sedate-face ((t (:foreground "Gray85"))))
+ (font-latex-string-face ((t (:foreground "orange"))))
+ (font-latex-warning-face ((t (:foreground "gold"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-field-face ((t (:background "gray20"))))
+ (widget-single-line-field-face ((t (:background "gray20"))))
+ (widget-inactive-face ((t (:foreground "wheat"))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (custom-invalid-face ((t (:foreground "yellow" :background "red"))))
+ (custom-rogue-face ((t (:foreground "pink" :background "black"))))
+ (custom-modified-face ((t (:foreground "white" :background "blue"))))
+ (custom-set-face ((t (:foreground "blue"))))
+ (custom-changed-face ((t (:foreground "wheat" :background "skyblue"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-state-face ((t (:foreground "light green"))))
+ (custom-variable-tag-face ((t (:foreground "skyblue" :underline t))))
+ (custom-variable-button-face ((t (:bold t :underline t))))
+ (custom-face-tag-face ((t (:foreground "white" :underline t))))
+ (custom-group-tag-face-1 ((t (:foreground "pink" :underline t))))
+ (custom-group-tag-face ((t (:foreground "skyblue" :underline t))))
+ (swbuff-current-buffer-face ((t (:foreground "red" :bold t))))
+ (ediff-current-diff-face-A ((t (:foreground "firebrick" :background "pale green"))))
+ (ediff-current-diff-face-B ((t (:foreground "DarkOrchid" :background "Yellow"))))
+ (ediff-current-diff-face-C ((t (:foreground "white" :background "indianred"))))
+ (ediff-current-diff-face-Ancestor ((t (:foreground "Black" :background "VioletRed"))))
+ (ediff-fine-diff-face-A ((t (:foreground "Navy" :background "sky blue"))))
+ (ediff-fine-diff-face-B ((t (:foreground "Black" :background "cyan"))))
+ (ediff-fine-diff-face-C ((t (:foreground "Black" :background "Turquoise"))))
+ (ediff-fine-diff-face-Ancestor ((t (:foreground "Black" :background "Green"))))
+ (ediff-even-diff-face-A ((t (:foreground "Black" :background "light grey"))))
+ (ediff-even-diff-face-B ((t (:foreground "White" :background "Grey"))))
+ (ediff-even-diff-face-C ((t (:foreground "Black" :background "light grey"))))
+ (ediff-even-diff-face-Ancestor ((t (:foreground "White" :background "Grey"))))
+ (ediff-odd-diff-face-A ((t (:foreground "White" :background "Grey"))))
+ (ediff-odd-diff-face-B ((t (:foreground "Black" :background "light grey"))))
+ (ediff-odd-diff-face-C ((t (:foreground "White" :background "Grey"))))
+ (ediff-odd-diff-face-Ancestor ((t (:foreground "Black" :background "light grey"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:foreground "white" :background "goldenrod4"))))
+ (gnus-emphasis-underline-bold ((t (:foreground "black" :background "yellow" :bold t :underline t))))
+ (gnus-emphasis-underline-italic ((t (:foreground "black" :background "yellow" :italic t :underline t))))
+ (gnus-emphasis-bold-italic ((t (:bold t :italic t))))
+ (gnus-emphasis-underline-bold-italic ((t (:foreground "black" :background "yellow" :bold t :italic t :underline t))))
+ (gnus-emphasis-highlight-words ((t (:foreground "yellow" :background "black"))))
+ (gnus-signature-face ((t (:italic t))))
+ (gnus-header-from-face ((t (:foreground "wheat"))))
+ (gnus-header-subject-face ((t (:foreground "wheat" :bold t))))
+ (gnus-header-newsgroups-face ((t (:foreground "wheat" :italic t))))
+ (gnus-header-name-face ((t (:foreground "white"))))
+ (gnus-header-content-face ((t (:foreground "tan" :italic t))))
+ (gnus-filterhist-face-1 ((t (nil))))
+ (gnus-splash ((t (:foreground "Brown"))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:foreground "light blue"))))
+ (gnus-cite-face-2 ((t (:foreground "light cyan"))))
+ (gnus-cite-face-3 ((t (:foreground "light yellow"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise")))))))
+
+(defun color-theme-retro-green (&optional color func)
+ "Plain green on black faces for those longing for the good old days."
+ (interactive)
+ ;; Build a list of faces without parameters
+ (let ((old-faces (face-list))
+ (faces)
+ (face)
+ (foreground (or color "green")))
+ (dolist (face old-faces)
+ (cond ((memq face '(bold bold-italic))
+ (add-to-list 'faces `(,face (( t (:bold t))))))
+ ((memq face '(italic underline show-paren-mismatch-face))
+ (add-to-list 'faces `(,face (( t (:underline t))))))
+ ((memq face '(modeline modeline-buffer-id modeline-mousable
+ modeline-mousable-minor-mode highlight region
+ secondary-selection show-paren-match-face))
+ (add-to-list 'faces `(,face (( t (:foreground "black"
+ :background ,foreground
+ :inverse t))))))
+ (t
+ (add-to-list 'faces `(,face (( t (nil))))))))
+ (color-theme-install
+ (append
+ (list (or func 'color-theme-retro-green)
+ (list (cons 'foreground-color foreground)
+ (cons 'background-color "black")
+ (cons 'mouse-color foreground)
+ (cons 'cursor-color foreground)
+ (cons 'border-color foreground)
+ (cons 'background-mode 'dark)))
+ faces))))
+
+(defun color-theme-retro-orange ()
+ "Plain orange on black faces for those longing for the good old days."
+ (interactive)
+ (color-theme-retro-green "orange" 'color-theme-retro-orange))
+
+(defun color-theme-subtle-hacker ()
+ "Subtle Hacker Color Theme.
+Based on gnome2, but uses white for important things like comments,
+and less of the unreadable tomato. By Colin Walters <levanti@verbum.org>"
+ (interactive)
+ (color-theme-gnome2)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-install
+ '(color-theme-subtle-hacker
+ nil
+ nil
+ (custom-state-face ((t (:foreground "Coral"))))
+ (diary-face ((t (:bold t :foreground "IndianRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "DimGray"))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "Coral"))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "black"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Gold"))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "White"))))
+ (font-lock-comment-face ((t (:foreground "White"))))
+ (font-lock-constant-face ((t (:bold t :foreground "Aquamarine"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "MediumSlateBlue"))))
+ (font-lock-string-face ((t (:italic t :foreground "LightSalmon"))))
+ (font-lock-variable-name-face ((t (:italic t :bold t :foreground "Aquamarine"))))
+ (gnus-cite-face-1 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-2 ((t (:foreground "chocolate"))))
+ (gnus-cite-face-3 ((t (:foreground "tomato"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "light cyan"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "light cyan"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "turquoise"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "tomato"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "tomato"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "dodger blue"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "dodger blue"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "green yellow"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "green yellow"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "dark orange"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "dark orange"))))
+ (gnus-group-news-3-empty-face ((t (:foreground "tomato"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "tomato"))))
+ (gnus-group-news-low-empty-face ((t (:foreground "yellow green"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "yellow green"))))
+ (gnus-header-name-face ((t (:bold t :foreground "DodgerBlue1"))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "LightSkyBlue3"))))
+ (gnus-signature-face ((t (:foreground "salmon"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "forest green"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "burlywood"))))
+ (gnus-summary-high-unread-face ((t (:italic t :bold t :foreground "cyan"))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "chocolate"))))
+ (gnus-summary-low-read-face ((t (:foreground "light sea green"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "chocolate"))))
+ (gnus-summary-low-unread-face ((t (:italic t :foreground "light sea green"))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "khaki"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "sandy brown"))))
+ (gnus-summary-normal-unread-face ((t (:foreground "aquamarine"))))
+ (message-cited-text-face ((t (:foreground "White"))))
+ (message-header-name-face ((t (:foreground "DodgerBlue1"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "LightSkyBlue3"))))
+ (message-header-other-face ((t (:foreground "LightSkyBlue3"))))
+ (message-header-xheader-face ((t (:foreground "DodgerBlue3"))))))))
+
+(defun color-theme-pok-wog ()
+ "Low-contrast White-on-Gray by S.Pokrovsky.
+
+The following might be a good addition to your .Xdefaults file:
+
+Emacs.pane.menubar.background: darkGrey
+Emacs.pane.menubar.foreground: black"
+ (interactive)
+ (color-theme-install
+ '(color-theme-pok-wog
+ ((foreground-color . "White")
+ (background-color . "DarkSlateGray")
+ (mouse-color . "gold")
+ (cursor-color . "Cyan")
+ (border-color . "black")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (bold ((t (:bold t :foreground "Wheat"))))
+ (bold-italic ((t (:italic t :bold t :foreground "wheat"))))
+ (calendar-today-face ((t (:underline t :foreground "white"))))
+ (diary-face ((t (:foreground "red"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "cyan"))))
+ (font-lock-comment-face ((t (:foreground "Gold"))))
+ (font-lock-constant-face ((t (:bold t :foreground "LightSteelBlue"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "Yellow"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "Cyan"))))
+ (font-lock-string-face ((t (:foreground "Khaki"))))
+ (font-lock-type-face ((t (:bold t :foreground "Cyan"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (gnus-cite-attribution-face ((t (:bold t :foreground "Wheat"))))
+ (gnus-cite-face-1 ((t (:foreground "wheat"))))
+ (gnus-cite-face-10 ((t (:foreground "wheat"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "cyan"))))
+ (gnus-cite-face-3 ((t (:foreground "light yellow"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :foreground "wheat"))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t :foreground "white"))))
+ (gnus-emphasis-underline ((t (:underline t :foreground "white"))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t :foreground "wheat"))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t :foreground "white"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "Salmon"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "gold"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "Wheat"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "Wheat"))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise"))))
+ (gnus-header-content-face ((t (:italic t :foreground "Wheat"))))
+ (gnus-header-from-face ((t (:foreground "light yellow"))))
+ (gnus-header-name-face ((t (:foreground "cyan"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "yellow"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "Gold"))))
+ (gnus-signature-face ((t (:italic t :foreground "wheat"))))
+ (gnus-splash-face ((t (:foreground "orange"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "pink"))))
+ (gnus-summary-high-unread-face ((t (:bold t :foreground "gold"))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "pink"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (:foreground "wheat"))))
+ (gnus-summary-selected-face ((t (:underline t :foreground "white"))))
+ (highlight ((t (:background "Blue" :foreground "white"))))
+ (highline-face ((t (:background "black" :foreground "white"))))
+ (holiday-face ((t (:background "pink" :foreground "white"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t :foreground "white"))))
+ (info-xref ((t (:bold t :foreground "wheat"))))
+ (italic ((t (:italic t :foreground "white"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (message-cited-text-face ((t (:foreground "green"))))
+ (message-header-cc-face ((t (:bold t :foreground "Aquamarine"))))
+ (message-header-name-face ((t (:foreground "Gold"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow"))))
+ (message-header-other-face ((t (:foreground "lightGray"))))
+ (message-header-subject-face ((t (:foreground "Yellow"))))
+ (message-header-to-face ((t (:bold t :foreground "green2"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:bold t :foreground "khaki"))))
+ (message-separator-face ((t (:background "aquamarine" :foreground "black"))))
+ (modeline ((t (:background "DarkGray" :foreground "Black"))))
+ (modeline-buffer-id ((t (:background "DarkGray" :foreground "Black"))))
+ (modeline-mousable ((t (:background "DarkGray" :foreground "Black"))))
+ (modeline-mousable-minor-mode ((t (:background "DarkGray" :foreground "Black"))))
+ (paren-mismatch-face ((t (:background "DeepPink" :foreground "white"))))
+ (paren-no-match-face ((t (:background "yellow" :foreground "white"))))
+ (region ((t (:background "MediumSlateBlue" :foreground "white"))))
+ (secondary-selection ((t (:background "Sienna" :foreground "white"))))
+ (show-paren-match-face ((t (:background "turquoise" :foreground "white"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:bold t :foreground "magenta"))))
+ (speedbar-directory-face ((t (:bold t :foreground "orchid"))))
+ (speedbar-file-face ((t (:foreground "pink"))))
+ (speedbar-highlight-face ((t (:background "black"))))
+ (speedbar-selected-face ((t (:underline t :foreground "cyan"))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (swbuff-current-buffer-face ((t (:bold t :foreground "red"))))
+ (underline ((t (:underline t :foreground "white"))))
+ (widget-button-face ((t (:bold t :foreground "wheat"))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray" :foreground "white"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray" :foreground "white")))))))
+
+(defun color-theme-pok-wob ()
+ "White-on-Black by S. Pokrovsky.
+
+The following might be a good addition to your .Xdefaults file:
+
+Emacs.pane.menubar.background: darkGrey
+Emacs.pane.menubar.foreground: black"
+ (interactive)
+; (setq term-default-fg-color "white"
+; term-default-bg "black")
+ (color-theme-install
+ '(color-theme-pok-wob
+ ((foreground-color . "white")
+ (background-color . "black")
+ (mouse-color . "gold")
+ (cursor-color . "yellow")
+ (border-color . "black")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (bold ((t (:bold t :foreground "light gray"))))
+ (bold-italic ((t (:italic t :bold t :foreground "cyan"))))
+ (calendar-today-face ((t (:underline t :foreground "white"))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t))))
+ (custom-group-tag-face-1 ((t (:underline t))))
+ (custom-invalid-face ((t (:background "red" :foreground "white"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (nil))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t))))
+ (diary-face ((t (:foreground "gold"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "cyan"))))
+ (font-lock-comment-face ((t (:foreground "Gold"))))
+ (font-lock-constant-face ((t (:bold t :foreground "LightSteelBlue"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "gold"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "Cyan"))))
+ (font-lock-string-face ((t (:foreground "Khaki"))))
+ (font-lock-type-face ((t (:bold t :foreground "Cyan"))))
+ (font-lock-variable-name-face ((t (:italic t :foreground "gold"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (gnus-cite-attribution-face ((t (:underline t :foreground "beige"))))
+ (gnus-cite-face-1 ((t (:foreground "gold"))))
+ (gnus-cite-face-10 ((t (:foreground "coral"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "wheat"))))
+ (gnus-cite-face-3 ((t (:foreground "light pink"))))
+ (gnus-cite-face-4 ((t (:foreground "khaki"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :foreground "light gray"))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :foreground "cyan"))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "gold"))))
+ (gnus-emphasis-italic ((t (:italic t :foreground "cyan"))))
+ (gnus-emphasis-underline ((t (:underline t :foreground "white"))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t :foreground "white"))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t :foreground "white"))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t :foreground "white"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "Magenta"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "Magenta"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "Cyan"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "Cyan"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "Wheat"))))
+ (gnus-group-mail-low-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise"))))
+ (gnus-group-news-3-empty-face ((t (:foreground "wheat"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "Wheat"))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (gnus-header-content-face ((t (:italic t :foreground "Wheat"))))
+ (gnus-header-from-face ((t (:foreground "light yellow"))))
+ (gnus-header-name-face ((t (:foreground "Wheat"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "gold"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "Gold"))))
+ (gnus-signature-face ((t (:italic t :foreground "white"))))
+ (gnus-splash-face ((t (:foreground "orange"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "orange"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "red"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "coral"))))
+ (gnus-summary-high-unread-face ((t (:bold t :foreground "gold"))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "red"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "coral"))))
+ (gnus-summary-low-unread-face ((t (:italic t :foreground "white"))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (:foreground "white"))))
+ (gnus-summary-selected-face ((t (:underline t :foreground "white"))))
+ (highlight ((t (:background "Blue" :foreground "white"))))
+ (highline-face ((t (:background "dark slate gray" :foreground "white"))))
+ (holiday-face ((t (:background "red" :foreground "white"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t :foreground "white"))))
+ (info-xref ((t (:bold t :foreground "light gray"))))
+ (italic ((t (:italic t :foreground "cyan"))))
+ (makefile-space-face ((t (:background "hotpink" :foreground "white"))))
+ (message-cited-text-face ((t (:foreground "green"))))
+ (message-header-cc-face ((t (:bold t :foreground "Aquamarine"))))
+ (message-header-name-face ((t (:foreground "Gold"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "gold"))))
+ (message-header-other-face ((t (:foreground "lightGray"))))
+ (message-header-subject-face ((t (:foreground "Yellow"))))
+ (message-header-to-face ((t (:bold t :foreground "green2"))))
+ (message-header-xheader-face ((t (:foreground "sky blue"))))
+ (message-mml-face ((t (:bold t :foreground "khaki"))))
+ (message-separator-face ((t (:background "aquamarine" :foreground "black"))))
+ (modeline ((t (:background "dark gray" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "dark gray" :foreground "black"))))
+ (modeline-mousable ((t (:background "dark gray" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "dark gray" :foreground "black"))))
+ (paren-mismatch-face ((t (:bold t :background "white" :foreground "red"))))
+ (paren-no-match-face ((t (:bold t :background "white" :foreground "red"))))
+ (region ((t (:background "MediumSlateBlue" :foreground "white"))))
+ (secondary-selection ((t (:background "Sienna" :foreground "white"))))
+ (show-paren-match-face ((t (:background "purple" :foreground "white"))))
+ (show-paren-mismatch-face ((t (:bold t :background "white" :foreground "red"))))
+ (speedbar-button-face ((t (nil))))
+ (speedbar-directory-face ((t (nil))))
+ (speedbar-file-face ((t (:bold t))))
+ (speedbar-highlight-face ((t (nil))))
+ (speedbar-selected-face ((t (:underline t))))
+ (speedbar-tag-face ((t (nil))))
+ (swbuff-current-buffer-face ((t (:bold t :foreground "red"))))
+ (underline ((t (:underline t :foreground "white"))))
+ (widget-button-face ((t (:bold t :foreground "coral"))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray" :foreground "white"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray" :foreground "white")))))))
+
+(defun color-theme-blue-sea ()
+ "The grey on midnight blue theme.
+
+Includes faces for apropos, font-lock (Emacs and XEmacs), speedbar,
+custom, widget, info, flyspell, gnus, message, man, woman, dired.
+
+This is what you should put in your .Xdefaults file, if you want to
+change the colors of the menus:
+
+emacs*Background: DarkSlateGray
+emacs*Foreground: Wheat"
+ (interactive)
+ (color-theme-blue-gnus)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-blue-erc)
+ (color-theme-install
+ '(color-theme-blue-sea
+ ((background-color . "MidnightBlue")
+ (background-mode . dark)
+ (border-color . "Grey")
+ (cursor-color . "Grey")
+ (foreground-color . "Grey")
+ (mouse-color . "Grey"))
+ ((Man-overstrike-face . woman-bold-face)
+ (Man-underline-face . woman-italic-face))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:bold t :foreground "beige"))))
+ (calendar-today-face ((t (:underline t))))
+ (cperl-array-face ((t (:foreground "light salmon" :bold t))))
+ (cperl-hash-face ((t (:foreground "beige" :bold t :italic t))))
+ (cperl-nonoverridable-face ((t (:foreground "aquamarine"))))
+ (custom-button-face ((t (:foreground "gainsboro"))))
+ (custom-changed-face ((t (:foreground "white" :background "blue"))))
+ (custom-documentation-face ((t (:foreground "light blue"))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:foreground "pale turquoise" :bold t))))
+ (custom-group-tag-face-1 ((t (:foreground "pale turquoise" :underline t))))
+ (custom-invalid-face ((t (:foreground "yellow" :background "red"))))
+ (custom-modified-face ((t (:foreground "white" :background "blue"))))
+ (custom-rogue-face ((t (:foreground "pink" :background "black"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:foreground "blue" :background "white"))))
+ (custom-state-face ((t (:foreground "light salmon"))))
+ (custom-variable-button-face ((t (:bold t :underline t))))
+ (custom-variable-tag-face ((t (:foreground "turquoise" :bold t))))
+ (diary-face ((t (:foreground "red"))))
+ (dired-face-directory ((t (:bold t :foreground "sky blue"))))
+ (dired-face-permissions ((t (:foreground "aquamarine"))))
+ (dired-face-flagged ((t (:foreground "tomato"))))
+ (dired-face-marked ((t (:foreground "light salmon"))))
+ (dired-face-executable ((t (:foreground "green yellow"))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "medium purple"))))
+ (eshell-ls-backup-face ((t (:foreground "dim gray"))))
+ (eshell-ls-clutter-face ((t (:foreground "dim gray"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "medium slate blue"))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "aquamarine"))))
+ (eshell-ls-missing-face ((t (:foreground "black"))))
+ (eshell-ls-picture-face ((t (:foreground "violet"))))
+ (eshell-ls-product-face ((t (:foreground "light steel blue"))))
+ (eshell-ls-readonly-face ((t (:foreground "aquamarine"))))
+ (eshell-ls-special-face ((t (:foreground "gold"))))
+ (eshell-ls-symlink-face ((t (:foreground "white"))))
+ (eshell-ls-unreadable-face ((t (:foreground "dim gray"))))
+ (eshell-prompt-face ((t (:foreground "light sky blue" :bold t))))
+ (excerpt ((t (:italic t))))
+ (fixed ((t (:bold t))))
+ (flyspell-duplicate-face ((t (:foreground "Gold3" :bold t :underline t))))
+ (flyspell-incorrect-face ((t (:foreground "OrangeRed" :bold t :underline t))))
+ (font-lock-builtin-face ((t (:foreground "aquamarine"))))
+ (font-lock-comment-face ((t (:foreground "light blue"))))
+ (font-lock-constant-face ((t (:foreground "pale green"))))
+ (font-lock-doc-string-face ((t (:foreground "sky blue"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "aquamarine"))))
+ (font-lock-keyword-face ((t (:foreground "pale turquoise" :bold t))))
+ (font-lock-reference-face ((t (:foreground "pale green"))))
+ (font-lock-string-face ((t (:foreground "light sky blue"))))
+ (font-lock-type-face ((t (:foreground "sky blue" :bold t))))
+ (font-lock-variable-name-face ((t (:foreground "turquoise" :bold t))))
+ (font-lock-warning-face ((t (:foreground "Red" :bold t))))
+ (fringe ((t (:background "MidnightBlue"))))
+ (header-line ((t (:background "#002" :foreground "cornflower blue"))))
+ (highlight ((t (:background "dark slate blue" :foreground "light blue"))))
+ (highline-face ((t (:background "DeepSkyBlue4"))))
+ (holiday-face ((t (:background "pink"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:bold t))))
+ (info-xref ((t (:bold t :foreground "sky blue"))))
+ (isearch ((t (:background "slate blue"))))
+ (italic ((t (:foreground "sky blue"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (menu ((t (:background "MidnightBlue" :foreground "Grey"))))
+ (modeline ((t (:foreground "wheat" :background "slate blue"))))
+ (mode-line-inactive ((t (:background "dark slate blue" :foreground "wheat"))))
+ (modeline-buffer-id ((t (:foreground "beige" :background "slate blue"))))
+ (modeline-mousable ((t (:foreground "light cyan" :background "slate blue"))))
+ (modeline-mousable-minor-mode ((t (:foreground "wheat" :background "slate blue"))))
+ (region ((t (:background "DarkSlateBlue"))))
+ (secondary-selection ((t (:background "steel blue"))))
+ (show-paren-match-face ((t (:foreground "white" :background "light slate blue"))))
+ (show-paren-mismatch-face ((t (:foreground "white" :background "red"))))
+ (speedbar-button-face ((t (:foreground "seashell2"))))
+ (speedbar-directory-face ((t (:foreground "seashell3"))))
+ (speedbar-file-face ((t (:foreground "seashell4"))))
+ (speedbar-highlight-face ((t (:background "dark slate blue" :foreground "wheat"))))
+ (speedbar-selected-face ((t (:foreground "seashell1" :underline t))))
+ (speedbar-tag-face ((t (:foreground "antique white"))))
+ (tool-bar ((t (:background "MidnightBlue" :foreground "Grey" :box (:line-width 1 :style released-button)))))
+ (underline ((t (:underline t))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "light blue"))))
+ (widget-field-face ((t (:background "RoyalBlue4" :foreground "wheat"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "slate blue" :foreground "wheat"))))
+ (woman-bold-face ((t (:foreground "sky blue" :bold t))))
+ (woman-italic-face ((t (:foreground "deep sky blue"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))
+ (zmacs-region ((t (:background "DarkSlateBlue"))))))))
+
+(defun color-theme-rotor ()
+ "Black on Beige color theme by Jinwei Shen, created 2000-06-08.
+Supports default faces, font-lock, custom, widget, message, man,
+show-paren, viper."
+ (interactive)
+ (color-theme-install
+ '(color-theme-rotor
+ ((background-color . "Beige")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "Maroon")
+ (foreground-color . "Black")
+ (mouse-color . "Black"))
+ ((Man-overstrike-face . font-lock-function-name-face)
+ (Man-underline-face . font-lock-type-face)
+ (list-matching-lines-face . bold)
+ (rmail-highlight-face . font-lock-function-name-face)
+ (watson-attribution-face . italic)
+ (watson-url-face . bold)
+ (watson-url-mouse-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t :background "grey40" :foreground "yellow"))))
+ (bold-italic ((t (:italic t :bold t :foreground "yellow green"))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:foreground "MediumBlue"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-function-name-face ((t (:foreground "MediumSlateBlue"))))
+ (font-lock-keyword-face ((t (:foreground "#80a0ff"))))
+ (font-lock-string-face ((t (:foreground "red"))))
+ (font-lock-type-face ((t (:foreground "ForestGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (highlight ((t (:background "PaleGreen" :foreground "black"))))
+ (italic ((t (:italic t :foreground "yellow3"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "wheat" :foreground "DarkOliveGreen"))))
+ (modeline-buffer-id ((t (:background "wheat" :foreground "DarkOliveGreen"))))
+ (modeline-mousable ((t (:background "wheat" :foreground "DarkOliveGreen"))))
+ (modeline-mousable-minor-mode ((t (:background "wheat" :foreground "DarkOliveGreen"))))
+ (nil ((t (nil))))
+ (region ((t (:background "dark cyan" :foreground "cyan"))))
+ (secondary-selection ((t (:background "Turquoise" :foreground "black"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (underline ((t (:underline t))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85")))))))
+
+(defun color-theme-pierson ()
+ "Black on White color theme by Dan L. Pierson, created 2000-06-08.
+Supports default faces, font-lock, show-paren."
+ (interactive)
+ (color-theme-install
+ '(color-theme-pierson
+ ((background-color . "AntiqueWhite")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "Orchid")
+ (foreground-color . "black")
+ (mouse-color . "Orchid"))
+ ((list-matching-lines-face . bold))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:foreground "ForestGreen"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-function-name-face ((t (:foreground "blue3"))))
+ (font-lock-keyword-face ((t (:foreground "Blue"))))
+ (font-lock-string-face ((t (:foreground "Firebrick"))))
+ (font-lock-type-face ((t (:foreground "Purple"))))
+ (font-lock-variable-name-face ((t (:foreground "blue3"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (italic ((t (:italic t))))
+ (modeline ((t (:foreground "antiquewhite" :background "black"))))
+ (modeline-mousable-minor-mode ((t (:foreground "antiquewhite" :background "black"))))
+ (modeline-mousable ((t (:foreground "antiquewhite" :background "black"))))
+ (modeline-buffer-id ((t (:foreground "antiquewhite" :background "black"))))
+ (region ((t (:background "gray"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (underline ((t (:underline t)))))))
+
+(defun color-theme-xemacs ()
+ "XEmacs standard colors.
+If you are missing standard faces in this theme, please notify the maintainer.
+Currently, this theme includes the standard faces and font-lock faces, including
+some faces used in Emacs only but which are needed to recreate the look of the
+XEmacs color theme."
+ (interactive)
+ (color-theme-install
+ '(color-theme-xemacs
+ ((background-color . "gray80")
+ (background-mode . light)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (cursor-color . "Red3")
+ (foreground-color . "black")
+ (top-toolbar-shadow-color . "#fffffbeeffff"))
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (nil))))
+ (custom-button-face ((t (:bold t))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t))))
+ (dired-face-executable ((t (:foreground "SeaGreen"))))
+ (dired-face-flagged ((t (:background "LightSlateGray"))))
+ (dired-face-marked ((t (:background "PaleVioletRed"))))
+ (dired-face-permissions ((t (:background "grey75" :foreground "black"))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (dired-face-symlink ((t (:foreground "cyan"))))
+ (font-lock-builtin-face ((t (:foreground "red3"))))
+ (font-lock-comment-face ((t (:foreground "blue4"))))
+ (font-lock-constant-face ((t (:foreground "red3"))))
+ (font-lock-doc-string-face ((t (:foreground "green4"))))
+ (font-lock-function-name-face ((t (:foreground "brown4"))))
+ (font-lock-keyword-face ((t (:foreground "red4"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "green4"))))
+ (font-lock-type-face ((t (:foreground "steelblue"))))
+ (font-lock-variable-name-face ((t (:foreground "magenta4"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:background "Gray80"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68"))))
+ (modeline ((t (:background "Gray80"))))
+ (modeline-buffer-id ((t (:background "Gray80" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "Gray80" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "Gray80" :foreground "green4"))))
+ (paren-blink-off ((t (:foreground "gray80"))))
+ (paren-match ((t (:background "darkseagreen2"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "black"))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "gray65"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (text-cursor ((t (:background "Red3" :foreground "gray80"))))
+ (toolbar ((t (:background "Gray80"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (:background "Gray80"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "gray65")))))))
+
+(defun color-theme-jsc-light ()
+ "Color theme by John S Cooper, created 2000-06-08."
+ (interactive)
+ (color-theme-install
+ '(color-theme-jsc-light
+ ((background-color . "white")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "Red")
+ (foreground-color . "black")
+ (mouse-color . "black"))
+ ((gnus-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t :foreground "red3"))))
+ (bold-italic ((t (:italic t :bold t :foreground "red"))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:italic t :bold t :foreground "Red3"))))
+ (font-lock-constant-face ((t (:foreground "navy"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "Blue"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "Purple"))))
+ (font-lock-string-face ((t (:foreground "Green4"))))
+ (font-lock-type-face ((t (:foreground "Navy"))))
+ (font-lock-variable-name-face ((t (:foreground "Tan4"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "blue2"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "blue2"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:italic t :foreground "blue"))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "red3"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "red"))))
+ (gnus-signature-face ((t (:foreground "pink"))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "navy"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:bold t :foreground "blue"))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "red3"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "black"))))
+ (gnus-summary-normal-unread-face ((t (:bold t :foreground "red3"))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (highlight ((t (:background "antiquewhite" :foreground "blue"))))
+ (italic ((t (:italic t))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "plum" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "plum" :foreground "black"))))
+ (modeline-mousable ((t (:background "plum" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "plum" :foreground "black"))))
+ (region ((t (:background "plum"))))
+ (secondary-selection ((t (:background "palegreen"))))
+ (show-paren-match-face ((t (:background "plum"))))
+ (show-paren-mismatch-face ((t (:background "navy" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (underline ((t (:underline t))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85")))))))
+
+(defun color-theme-jsc-dark ()
+ "Color theme by John S Cooper, created 2000-06-11."
+ (interactive)
+ (color-theme-install
+ '(color-theme-jsc-dark
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "white")
+ (foreground-color . "cornsilk")
+ (mouse-color . "black"))
+ ((gnus-mouse-face . highlight)
+ (goto-address-mail-face . italic)
+ (goto-address-mail-mouse-face . secondary-selection)
+ (goto-address-url-face . bold)
+ (goto-address-url-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (blank-space-face ((t (:background "LightGray"))))
+ (blank-tab-face ((t (:background "cornsilk" :foreground "black"))))
+ (default ((t (nil))))
+ (bold ((t (:bold t :foreground "white"))))
+ (bold-italic ((t (:italic t :bold t))))
+ (calendar-today-face ((t (:underline t))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue"))))
+ (cperl-hash-face ((t (:italic t :bold t :background "lightyellow2" :foreground "Red"))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (custom-button-face ((t (:foreground "white"))))
+ (custom-changed-face ((t (:background "skyblue" :foreground "wheat"))))
+ (custom-documentation-face ((t (:foreground "white"))))
+ (custom-face-tag-face ((t (:underline t :foreground "white"))))
+ (custom-group-tag-face ((t (:underline t :foreground "skyblue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "pink"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:foreground "blue"))))
+ (custom-state-face ((t (:foreground "light green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "skyblue"))))
+ (diary-face ((t (:bold t :foreground "orange"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:italic t :foreground "red"))))
+ (font-lock-constant-face ((t (:bold t :foreground "salmon"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "orange"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "gold"))))
+ (font-lock-string-face ((t (:italic t :foreground "orange"))))
+ (font-lock-type-face ((t (:bold t :foreground "gold"))))
+ (font-lock-variable-name-face ((t (:italic t :bold t :foreground "light salmon"))))
+ (font-lock-warning-face ((t (:bold t :foreground "gold"))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:foreground "light cyan"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "light blue"))))
+ (gnus-cite-face-3 ((t (:foreground "light yellow"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:background "goldenrod4" :foreground "white"))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t :background "yellow" :foreground "black"))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t :background "yellow" :foreground "black"))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t :background "yellow" :foreground "black"))))
+ (gnus-filterhist-face-1 ((t (nil))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "white"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "lightcyan"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "lightcyan"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "tan"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "tan"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "white"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "white"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "lightcyan"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "lightcyan"))))
+ (gnus-group-news-3-empty-face ((t (:foreground "tan"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "tan"))))
+ (gnus-group-news-4-empty-face ((t (:foreground "white"))))
+ (gnus-group-news-4-face ((t (:bold t :foreground "white"))))
+ (gnus-group-news-5-empty-face ((t (:foreground "wheat"))))
+ (gnus-group-news-5-face ((t (:bold t :foreground "wheat"))))
+ (gnus-group-news-6-empty-face ((t (:foreground "tan"))))
+ (gnus-group-news-6-face ((t (:bold t :foreground "tan"))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise"))))
+ (gnus-header-content-face ((t (:italic t :foreground "plum1"))))
+ (gnus-header-from-face ((t (:bold t :foreground "wheat"))))
+ (gnus-header-name-face ((t (:bold t :foreground "gold"))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "wheat"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "red"))))
+ (gnus-signature-face ((t (:italic t :foreground "maroon"))))
+ (gnus-splash ((t (:foreground "Brown"))))
+ (gnus-splash-face ((t (:foreground "gold"))))
+ (gnus-summary-cancelled-face ((t (:background "gray" :foreground "black"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "gray70"))))
+ (gnus-summary-high-unread-face ((t (:italic t :bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :bold t :foreground "gray70"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:bold t :foreground "gray70"))))
+ (gnus-summary-normal-unread-face ((t (:bold t))))
+ (gnus-summary-selected-face ((t (:underline t :background "deepskyblue4"))))
+ (highlight ((t (:background "darkslategray" :foreground "wheat"))))
+ (highlight-changes-delete-face ((t (:underline t :foreground "red"))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highline-face ((t (:background "gray35"))))
+ (holiday-face ((t (:background "red"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t :foreground "yellow"))))
+ (info-xref ((t (:bold t :foreground "plum"))))
+ (italic ((t (:italic t))))
+ (lazy-highlight-face ((t (:bold t :foreground "dark magenta"))))
+ (linemenu-face ((t (:background "gray30"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (message-cited-text-face ((t (:foreground "plum1"))))
+ (message-header-cc-face ((t (:bold t :foreground "ivory"))))
+ (message-header-name-face ((t (:foreground "light sky blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "lavender blush"))))
+ (message-header-other-face ((t (:foreground "pale turquoise"))))
+ (message-header-subject-face ((t (:bold t :foreground "papaya whip"))))
+ (message-header-to-face ((t (:bold t :foreground "floral white"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:bold t :foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "sandy brown"))))
+ (modeline ((t (:background "tan" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "tan" :foreground "black"))))
+ (modeline-mousable ((t (:background "tan" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "tan" :foreground "black"))))
+ (paren-mismatch-face ((t (:bold t :background "white" :foreground "red"))))
+ (paren-no-match-face ((t (:bold t :background "white" :foreground "red"))))
+ (region ((t (:background "slategrey"))))
+ (secondary-selection ((t (:background "deepskyblue4"))))
+ (sgml-doctype-face ((t (:foreground "orange"))))
+ (sgml-end-tag-face ((t (:foreground "greenyellow"))))
+ (sgml-entity-face ((t (:foreground "gold"))))
+ (sgml-ignored-face ((t (:background "gray60" :foreground "gray20"))))
+ (sgml-sgml-face ((t (:foreground "yellow"))))
+ (sgml-start-tag-face ((t (:foreground "mediumspringgreen"))))
+ (show-paren-match-face ((t (:background "deepskyblue4"))))
+ (show-paren-mismatch-face ((t (:bold t :background "red" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:bold t :foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (underline ((t (:underline t))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "gray20"))))
+ (widget-inactive-face ((t (:foreground "wheat"))))
+ (widget-single-line-field-face ((t (:background "gray20"))))
+ (woman-bold-face ((t (:bold t))))
+ (woman-italic-face ((t (:foreground "beige"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon")))))))
+
+(defun color-theme-greiner ()
+ "Color theme by Kevin Greiner, created 2000-06-13.
+Black on Beige, supports default, font-lock, speedbar, custom, widget
+faces. Designed to be easy on the eyes, particularly on Win32
+computers which commonly have white window backgrounds."
+ (interactive)
+ (color-theme-install
+ '(color-theme-greiner
+ ((background-color . "beige")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "black")
+ (mouse-color . "black"))
+ ((list-matching-lines-face . bold))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (font-lock-builtin-face ((t (:foreground "blue4"))))
+ (font-lock-comment-face ((t (:foreground "Firebrick"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-function-name-face ((t (:foreground "Blue"))))
+ (font-lock-keyword-face ((t (:foreground "royal blue"))))
+ (font-lock-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-type-face ((t (:foreground "ForestGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (italic ((t (:italic t))))
+ (modeline ((t (:background "black" :foreground "white"))))
+ (modeline-mousable-minor-mode ((t (:background "black" :foreground "white"))))
+ (modeline-mousable ((t (:background "black" :foreground "white"))))
+ (modeline-buffer-id ((t (:background "black" :foreground "white"))))
+ (region ((t (:background "gray"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (underline ((t (:underline t))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85")))))))
+
+(defun color-theme-jb-simple ()
+ "Color theme by jeff, created 2000-06-14.
+Uses white background and bold for many things"
+ (interactive)
+ (color-theme-install
+ '(color-theme-jb-simple
+ ((background-color . "white")
+ (background-mode . light)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "black")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (cursor-color . "black")
+ (foreground-color . "black")
+ (mouse-color . "black")
+ (top-toolbar-shadow-color . "#fffffbeeffff"))
+ ((gnus-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (rmail-highlight-face . font-lock-function-name-face)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (blank-space-face ((t (nil))))
+ (blank-tab-face ((t (nil))))
+ (blue ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (nil))))
+ (calendar-today-face ((t (:underline t))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue"))))
+ (cperl-hash-face ((t (:italic t :bold t :background "lightyellow2" :foreground "Red"))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (custom-button-face ((t (:bold t))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :bold t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :bold t :foreground "blue"))))
+ (diary-face ((t (:bold t :foreground "red"))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (erc-action-face ((t (:bold t))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (nil))))
+ (erc-error-face ((t (:bold t))))
+ (erc-input-face ((t (nil))))
+ (erc-inverse-face ((t (nil))))
+ (erc-notice-face ((t (nil))))
+ (erc-pal-face ((t (nil))))
+ (erc-prompt-face ((t (nil))))
+ (erc-underline-face ((t (nil))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid"))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Blue"))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "ForestGreen"))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red"))))
+ (eshell-ls-picture-face ((t (nil))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta"))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "DarkCyan"))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Red"))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green"))))
+ (excerpt ((t (:italic t))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "NavyBlue"))))
+ (fixed ((t (:bold t))))
+ (flyspell-duplicate-face ((t (:underline t :bold t :foreground "Gold3"))))
+ (flyspell-incorrect-face ((t (:underline t :bold t :foreground "OrangeRed"))))
+ (font-latex-bold-face ((t (nil))))
+ (font-latex-italic-face ((t (nil))))
+ (font-latex-math-face ((t (nil))))
+ (font-latex-sedate-face ((t (nil))))
+ (font-latex-string-face ((t (nil))))
+ (font-latex-warning-face ((t (nil))))
+ (font-lock-builtin-face ((t (:bold t :foreground "Orchid"))))
+ (font-lock-comment-face ((t (:italic t :bold t :foreground "blue4"))))
+ (font-lock-constant-face ((t (:bold t :foreground "CadetBlue"))))
+ (font-lock-doc-string-face ((t (:italic t :bold t :foreground "blue4"))))
+ (font-lock-exit-face ((t (nil))))
+ (font-lock-function-name-face ((t (:bold t :foreground "brown4"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "black"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:italic t :bold t :foreground "green4"))))
+ (font-lock-type-face ((t (:bold t :foreground "steelblue"))))
+ (font-lock-variable-name-face ((t (:italic t :bold t :foreground "magenta4"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (gnus-cite-attribution-face ((t (:italic t :bold t))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (nil))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-filterhist-face-1 ((t (nil))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4"))))
+ (gnus-header-from-face ((t (:bold t :foreground "red3"))))
+ (gnus-header-name-face ((t (:bold t :foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "red4"))))
+ (gnus-signature-face ((t (:italic t))))
+ (gnus-splash ((t (nil))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:italic t :bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :bold t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (:bold t))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (green ((t (nil))))
+ (gui-button-face ((t (:background "grey75"))))
+ (gui-element ((t (:background "Gray80"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (highlight-changes-delete-face ((t (:underline t :foreground "red"))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highline-face ((t (:background "paleturquoise"))))
+ (holiday-face ((t (:background "pink"))))
+ (html-helper-italic-face ((t (:italic t))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (nil))))
+ (italic ((t (:italic t))))
+ (lazy-highlight-face ((t (:bold t :foreground "dark magenta"))))
+ (left-margin ((t (nil))))
+ (linemenu-face ((t (nil))))
+ (list-mode-item-selected ((t (nil))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:bold t))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "darkblue" :foreground "yellow"))))
+ (modeline-buffer-id ((t (:background "black" :foreground "white"))))
+ (modeline-mousable ((t (:background "black" :foreground "white"))))
+ (modeline-mousable-minor-mode ((t (:background "black" :foreground "white"))))
+ (nil ((t (nil))))
+ (paren-mismatch-face ((t (:bold t))))
+ (paren-no-match-face ((t (:bold t))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (nil))))
+ (red ((t (nil))))
+ (region ((t (:background "gray"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (sgml-doctype-face ((t (nil))))
+ (sgml-end-tag-face ((t (nil))))
+ (sgml-entity-face ((t (nil))))
+ (sgml-ignored-face ((t (nil))))
+ (sgml-sgml-face ((t (nil))))
+ (sgml-start-tag-face ((t (nil))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:bold t :background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:bold t :foreground "green4"))))
+ (speedbar-directory-face ((t (:bold t :foreground "blue4"))))
+ (speedbar-file-face ((t (:bold t :foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (swbuff-current-buffer-face ((t (:bold t))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-bold ((t (:bold t))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-green ((t (:foreground "green"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-red ((t (:foreground "red"))))
+ (term-redbg ((t (:background "red"))))
+ (term-underline ((t (:underline t))))
+ (term-white ((t (:foreground "white"))))
+ (term-whitebg ((t (:background "white"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (text-cursor ((t (nil))))
+ (toolbar ((t (nil))))
+ (underline ((t (:underline t))))
+ (vc-annotate-face-0046FF ((t (nil))))
+ (vcursor ((t (:underline t :background "cyan" :foreground "blue"))))
+ (vertical-divider ((t (nil))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red"))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange"))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:underline t :foreground "Blue"))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:underline t :foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:underline t :foreground "ForestGreen"))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:underline t :foreground "Brown"))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:underline t :foreground "Grey50"))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (woman-bold-face ((t (:bold t))))
+ (woman-italic-face ((t (nil))))
+ (woman-unknown-face ((t (nil))))
+ (yellow ((t (nil))))
+ (zmacs-region ((t (nil)))))))
+
+(defun color-theme-beige-diff ()
+ "Brownish faces for diff and change-log modes.
+This is intended for other color themes to use (eg. `color-theme-gnome2'
+and `color-theme-blue-sea')."
+ (color-theme-install
+ '(color-theme-beige-diff
+ nil
+ (change-log-acknowledgement-face ((t (:foreground "firebrick"))))
+ (change-log-conditionals-face ((t (:foreground "khaki" :background "sienna"))))
+ (change-log-date-face ((t (:foreground "gold"))))
+ (change-log-email-face ((t (:foreground "khaki" :underline t))))
+ (change-log-file-face ((t (:bold t :foreground "lemon chiffon"))))
+ (change-log-function-face ((t (:foreground "khaki" :background "sienna"))))
+ (change-log-list-face ((t (:foreground "wheat"))))
+ (change-log-name-face ((t (:bold t :foreground "light goldenrod"))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (:foreground "grey50"))))
+ (diff-file-header-face ((t (:bold t :foreground "lemon chiffon"))))
+ (diff-function-face ((t (:foreground "grey50"))))
+ (diff-header-face ((t (:foreground "lemon chiffon"))))
+ (diff-hunk-header-face ((t (:foreground "light goldenrod"))))
+ (diff-index-face ((t (:bold t :underline t))))
+ (diff-nonexistent-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-removed-face ((t (nil))))
+ (log-view-message-face ((t (:foreground "lemon chiffon")))))))
+
+(defun color-theme-standard-ediff ()
+ "Standard colors for ediff faces.
+This is intended for other color themes to use
+\(eg. `color-theme-goldenrod')."
+ (color-theme-install
+ '(color-theme-beige-diff
+ nil
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White")))))))
+
+(defun color-theme-beige-eshell ()
+ "Brownish colors for eshell faces only.
+This is intended for other color themes to use (eg. `color-theme-goldenrod')."
+ (color-theme-install
+ '(color-theme-beige-eshell
+ nil
+ (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
+ (eshell-ls-backup-face ((t (:foreground "Grey"))))
+ (eshell-ls-clutter-face ((t (:foreground "DimGray"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "dark khaki"))))
+ (eshell-ls-executable-face ((t (:foreground "Coral"))))
+ (eshell-ls-missing-face ((t (:foreground "black"))))
+ (eshell-ls-picture-face ((t (:foreground "gold")))) ; non-standard face
+ (eshell-ls-product-face ((t (:foreground "dark sea green"))))
+ (eshell-ls-readonly-face ((t (:foreground "light steel blue"))))
+ (eshell-ls-special-face ((t (:foreground "gold"))))
+ (eshell-ls-symlink-face ((t (:foreground "peach puff"))))
+ (eshell-ls-text-face ((t (:foreground "moccasin")))) ; non-standard face
+ (eshell-ls-todo-face ((t (:bold t :foreground "yellow green")))) ; non-standard face
+ (eshell-ls-unreadable-face ((t (:foreground "DimGray"))))
+ (eshell-prompt-face ((t (:foreground "lemon chiffon")))))))
+
+(defun color-theme-goldenrod ()
+ "Brown color theme. Very different from the others.
+Supports standard, font-lock and info faces, and it uses
+`color-theme-blue-gnus', `color-theme-blue-erc' , and
+`color-theme-beige-diff'."
+ (interactive)
+ (color-theme-blue-gnus)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-blue-erc)
+ (color-theme-beige-diff)
+ (color-theme-beige-eshell)
+ (color-theme-install
+ '(color-theme-goldenrod
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "light goldenrod")
+ (foreground-color . "goldenrod")
+ (mouse-color . "goldenrod"))
+ ((goto-address-mail-face . info-xref)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t :foreground "lavender"))))
+ (font-lock-builtin-face ((t (:foreground "pale goldenrod"))))
+ (font-lock-comment-face ((t (:foreground "indian red"))))
+ (font-lock-constant-face ((t (:foreground "pale green"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "lemon chiffon"))))
+ (font-lock-keyword-face ((t (:foreground "wheat"))))
+ (font-lock-string-face ((t (:foreground "gold"))))
+ (font-lock-type-face ((t (:foreground "dark khaki" :bold t))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "khaki"))))
+ (font-lock-warning-face ((t (:bold t :foreground "orange red"))))
+ (fringe ((t (:background "gray25"))))
+ (header-line ((t (:background "gray20" :foreground "gray70"))))
+ (highlight ((t (:background "dark slate blue"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:bold t))))
+ (info-xref ((t (:bold t :foreground "pale goldenrod"))))
+ (isearch ((t (:background "SeaGreen4"))))
+ (isearch-lazy-highlight-face ((t (:background "DarkOliveGreen4"))))
+ (italic ((t (:italic t :foreground "lavender"))))
+ (menu ((t (:background "gray25" :foreground "lemon chiffon"))))
+ (modeline ((t (:background "gray40" :foreground "lemon chiffon" :box (:line-width 1 :style released-button)))))
+ (modeline-buffer-id ((t (:background "AntiqueWhite4" :foreground "lemon chiffon"))))
+ (modeline-mousable ((t (:background "AntiqueWhite4" :foreground "lemon chiffon"))))
+ (modeline-mousable-minor-mode ((t (:background "wheat" :foreground "lemon chiffon"))))
+ (mode-line-inactive ((t (:background "gray20" :foreground "lemon chiffon" :box (:line-width 1 :style released-button)))))
+ (region ((t (:background "dark olive green"))))
+ (secondary-selection ((t (:background "dark green"))))
+ (tool-bar ((t (:background "gray25" :foreground "lemon chiffon" :box (:line-width 1 :style released-button)))))
+ (underline ((t (:underline t))))))))
+
+(defun color-theme-ramangalahy ()
+ "Color theme by Solofo Ramangalahy, created 2000-10-18.
+Black on light grey, includes faces for vm, ispell, gnus,
+dired, display-time, cperl, font-lock, widget, x-symbol."
+ (interactive)
+ (color-theme-install
+ '(color-theme-ramangalahy
+ ((background-color . "lightgrey")
+ (background-mode . light)
+ (background-toolbar-color . "#bfbfbfbfbfbf")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#737373737373")
+ (cursor-color . "blue")
+ (foreground-color . "black")
+ (top-toolbar-shadow-color . "#e6e6e6e6e6e6"))
+ ((gnus-mouse-face . highlight)
+ (goto-address-mail-face . info-xref)
+ (ispell-highlight-face . highlight)
+ (notes-bold-face . notes-bold-face)
+ (setnu-line-number-face . bold)
+ (tinyreplace-:face . highlight)
+ (vm-highlight-url-face . bold-italic)
+ (vm-highlighted-header-face . bold)
+ (vm-mime-button-face . gui-button-face)
+ (vm-summary-highlight-face . bold))
+ (default ((t (nil))))
+ (bbdb-company ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (nil))))
+ (cperl-here-face ((t (:foreground "green4"))))
+ (cperl-pod-face ((t (:foreground "brown4"))))
+ (cperl-pod-head-face ((t (:foreground "steelblue"))))
+ (custom-button-face ((t (:bold t))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t))))
+ (dired-face-executable ((t (:foreground "SeaGreen"))))
+ (dired-face-flagged ((t (:background "LightSlateGray"))))
+ (dired-face-marked ((t (:background "PaleVioletRed"))))
+ (dired-face-permissions ((t (:background "grey75" :foreground "black"))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (dired-face-symlink ((t (:foreground "blue"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "NavyBlue"))))
+ (font-lock-comment-face ((t (:bold t :foreground "purple"))))
+ (font-lock-doc-string-face ((t (:bold t :foreground "slateblue"))))
+ (font-lock-emphasized-face ((t (:bold t :background "lightyellow2"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "blue"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "violetred"))))
+ (font-lock-other-emphasized-face ((t (:italic t :bold t :background "lightyellow2"))))
+ (font-lock-other-type-face ((t (:bold t :foreground "orange3"))))
+ (font-lock-preprocessor-face ((t (:bold t :foreground "mediumblue"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "green4"))))
+ (font-lock-type-face ((t (:bold t :foreground "steelblue"))))
+ (font-lock-variable-name-face ((t (:foreground "magenta4"))))
+ (font-lock-warning-face ((t (:bold t :background "yellow" :foreground "Red"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (nil))))
+ (gnus-emphasis-italic ((t (nil))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t))))
+ (gnus-emphasis-underline-italic ((t (:underline t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:foreground "indianred4"))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-signature-face ((t (:bold t))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (nil))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-x-face ((t (:background "lightgrey" :foreground "black"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:background "lightgrey"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (info-node ((t (:underline t :bold t :foreground "mediumpurple"))))
+ (info-xref ((t (:underline t :bold t :foreground "#0000ee"))))
+ (isearch ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68" :foreground "black"))))
+ (message-cited-text ((t (:foreground "slategrey"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-contents ((t (:italic t))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-headers ((t (:bold t))))
+ (message-highlighted-header-contents ((t (:bold t))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (message-url ((t (:bold t))))
+ (modeline ((t (:bold t :background "Gray75" :foreground "Black"))))
+ (modeline-buffer-id ((t (:bold t :background "Gray75" :foreground "blue4"))))
+ (modeline-mousable ((t (:bold t :background "Gray75" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:bold t :background "Gray75" :foreground "green4"))))
+ (paren-blink-off ((t (:foreground "lightgrey"))))
+ (paren-match ((t (:background "darkseagreen2"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "black"))))
+ (pointer ((t (:foreground "blue"))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "black" :foreground "white"))))
+ (right-margin ((t (nil))))
+ (searchm-buffer ((t (:bold t :background "white" :foreground "red"))))
+ (searchm-button ((t (:bold t :background "CadetBlue" :foreground "white"))))
+ (searchm-field ((t (:background "grey89"))))
+ (searchm-field-label ((t (:bold t))))
+ (searchm-highlight ((t (:bold t :background "darkseagreen2" :foreground "black"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (template-message-face ((t (:bold t))))
+ (text-cursor ((t (:background "blue" :foreground "lightgrey"))))
+ (toolbar ((t (nil))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (nil))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (x-face ((t (:background "white" :foreground "black"))))
+ (x-symbol-adobe-fontspecific-face ((t (nil))))
+ (x-symbol-face ((t (nil))))
+ (x-symbol-heading-face ((t (:underline t :bold t :foreground "green4"))))
+ (x-symbol-info-face ((t (:foreground "green4"))))
+ (x-symbol-invisible-face ((t (nil))))
+ (x-symbol-revealed-face ((t (:background "pink"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "yellow")))))))
+
+(defun color-theme-raspopovic ()
+ "Color theme by Pedja Raspopovic, created 2000-10-19.
+Includes faces for dired, font-lock, info, paren."
+ (interactive)
+ (color-theme-install
+ '(color-theme-raspopovic
+ ((background-color . "darkblue")
+ (background-mode . light)
+ (background-toolbar-color . "#bfbfbfbfbfbf")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#737373737373")
+ (cursor-color . "Red3")
+ (foreground-color . "yellow")
+ (top-toolbar-shadow-color . "#e6e6e6e6e6e6"))
+ ((setnu-line-number-face . bold)
+ (goto-address-mail-face . info-xref))
+ (default ((t (nil))))
+ (blue ((t (:background "darkblue" :foreground "blue"))))
+ (bold ((t (:bold t :background "darkblue" :foreground "yellow"))))
+ (bold-italic ((t (:bold t :background "darkblue" :foreground "red3"))))
+ (comint-input-face ((t (:foreground "deepskyblue"))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:foreground "lightgreen"))))
+ (dired-face-executable ((t (:foreground "indianred"))))
+ (dired-face-flagged ((t (:background "LightSlateGray"))))
+ (dired-face-marked ((t (:background "darkblue" :foreground "deepskyblue"))))
+ (dired-face-permissions ((t (:background "darkblue" :foreground "white"))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (dired-face-symlink ((t (:foreground "grey95"))))
+ (font-lock-comment-face ((t (:background "darkblue" :foreground "lightgreen"))))
+ (font-lock-doc-string-face ((t (:background "darkblue" :foreground "darkseagreen"))))
+ (font-lock-function-name-face ((t (:bold t :background "darkblue" :foreground "indianred"))))
+ (font-lock-keyword-face ((t (:background "darkblue" :foreground "skyblue"))))
+ (font-lock-preprocessor-face ((t (:background "darkblue" :foreground "orange"))))
+ (font-lock-reference-face ((t (:background "darkblue" :foreground "deepskyblue"))))
+ (font-lock-string-face ((t (:background "darkblue" :foreground "lightgrey"))))
+ (font-lock-type-face ((t (:background "darkblue" :foreground "orange"))))
+ (font-lock-variable-name-face ((t (:background "darkblue" :foreground "white"))))
+ (green ((t (:background "darkblue" :foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (highlight ((t (:background "yellow" :foreground "darkblue"))))
+ (info-node ((t (:bold t :background "darkblue" :foreground "red3"))))
+ (info-xref ((t (:bold t :background "darkblue" :foreground "yellow"))))
+ (isearch ((t (:background "yellow" :foreground "darkblue"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (:background "darkblue" :foreground "red3"))))
+ (left-margin ((t (:background "darkblue" :foreground "yellow"))))
+ (list-mode-item-selected ((t (:background "gray68" :foreground "yellow"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (modeline ((t (:background "Gray75" :foreground "Black"))))
+ (modeline-buffer-id ((t (:background "Gray75" :foreground "blue"))))
+ (modeline-mousable ((t (:background "Gray75" :foreground "red"))))
+ (modeline-mousable-minor-mode ((t (:background "Gray75" :foreground "green4"))))
+ (paren-blink-off ((t (:foreground "darkblue"))))
+ (paren-match ((t (:background "yellow" :foreground "darkblue"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "yellow"))))
+ (pointer ((t (:background "darkblue" :foreground "red3"))))
+ (primary-selection ((t (:background "yellow" :foreground "darkblue"))))
+ (red ((t (:background "darkblue" :foreground "red"))))
+ (right-margin ((t (:background "darkblue" :foreground "yellow"))))
+ (secondary-selection ((t (:background "darkblue" :foreground "yellow"))))
+ (shell-option-face ((t (:background "darkblue" :foreground "cyan2"))))
+ (shell-output-2-face ((t (:background "darkblue" :foreground "darkseagreen"))))
+ (shell-output-3-face ((t (:background "darkblue" :foreground "lightgrey"))))
+ (shell-output-face ((t (:background "darkblue" :foreground "white"))))
+ (shell-prompt-face ((t (:background "darkblue" :foreground "red"))))
+ (text-cursor ((t (:background "Red3" :foreground "white"))))
+ (underline ((t (:underline t :background "darkblue" :foreground "yellow"))))
+ (vvb-face ((t (:background "pink" :foreground "black"))))
+ (yellow ((t (:background "darkblue" :foreground "yellow"))))
+ (zmacs-region ((t (:background "gray" :foreground "black")))))))
+
+(defun color-theme-taylor ()
+ "Color theme by Art Taylor, created 2000-10-20.
+Wheat on black. Includes faces for font-lock, gnus, paren."
+ (interactive)
+ (color-theme-install
+ '(color-theme-taylor
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "red")
+ (foreground-color . "wheat")
+ (mouse-color . "black"))
+ ((gnus-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t :background "grey40" :foreground "yellow"))))
+ (bold-italic ((t (:italic t :bold t :foreground "yellow green"))))
+ (fl-comment-face ((t (:foreground "medium purple"))))
+ (fl-function-name-face ((t (:foreground "green"))))
+ (fl-keyword-face ((t (:foreground "LightGreen"))))
+ (fl-string-face ((t (:foreground "light coral"))))
+ (fl-type-face ((t (:foreground "cyan"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "OrangeRed"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-function-name-face ((t (:foreground "LightSkyBlue"))))
+ (font-lock-keyword-face ((t (:foreground "Cyan"))))
+ (font-lock-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-type-face ((t (:foreground "PaleGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "aquamarine3"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise"))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "pink"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "pink"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (highlight ((t (:background "black" :foreground "black"))))
+ (italic ((t (:italic t :foreground "yellow3"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4"))))
+ (message-header-name-face ((t (:foreground "DarkGreen"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow"))))
+ (message-header-other-face ((t (:foreground "#b00000"))))
+ (message-header-subject-face ((t (:foreground "green3"))))
+ (message-header-to-face ((t (:bold t :foreground "green2"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "blue3"))))
+ (modeline ((t (:background "wheat" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "wheat" :foreground "black"))))
+ (modeline-mousable ((t (:background "wheat" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "wheat" :foreground "black"))))
+ (region ((t (:background "blue"))))
+ (secondary-selection ((t (:background "darkslateblue" :foreground "black"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (underline ((t (:underline t))))
+ (xref-keyword-face ((t (:foreground "blue"))))
+ (xref-list-default-face ((t (nil))))
+ (xref-list-pilot-face ((t (:foreground "navy"))))
+ (xref-list-symbol-face ((t (:foreground "navy")))))))
+
+(defun color-theme-marquardt ()
+ "Color theme by Colin Marquardt, created 2000-10-25.
+Black on bisque, a light color. Based on some settings from Robin S. Socha.
+Features some color changes to programming languages, especially vhdl-mode.
+You might also want to put something like
+ Emacs*Foreground: Black
+ Emacs*Background: bisque2
+in your ~/.Xdefaults."
+ (interactive)
+ (color-theme-install
+ '(color-theme-marquardt
+ ((background-color . "bisque")
+ (background-mode . light)
+ (background-toolbar-color . "bisque")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#909099999999")
+ (cursor-color . "Red3")
+ (foreground-color . "black")
+ (top-toolbar-shadow-color . "#ffffffffffff"))
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:bold t))))
+ (border-glyph ((t (nil))))
+ (calendar-today-face ((t (:underline t))))
+ (diary-face ((t (:foreground "red"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "NavyBlue"))))
+ (font-lock-comment-face ((t (:foreground "gray50"))))
+ (font-lock-doc-string-face ((t (:foreground "green4"))))
+ (font-lock-function-name-face ((t (:foreground "darkorange"))))
+ (font-lock-keyword-face ((t (:foreground "blue3"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-special-comment-face ((t (:foreground "blue4"))))
+ (font-lock-special-keyword-face ((t (:foreground "red4"))))
+ (font-lock-string-face ((t (:foreground "green4"))))
+ (font-lock-type-face ((t (:foreground "steelblue"))))
+ (font-lock-variable-name-face ((t (:foreground "black"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:background "azure1" :foreground "Black"))))
+ (highlight ((t (:background "darkseagreen2" :foreground "blue"))))
+ (holiday-face ((t (:background "pink" :foreground "black"))))
+ (info-node ((t (:bold t))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (:background "yellow" :foreground "red"))))
+ (italic ((t (:bold t))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68" :foreground "black"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "bisque2" :foreground "steelblue4"))))
+ (modeline-buffer-id ((t (:background "bisque2" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "bisque2" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "bisque2" :foreground "green4"))))
+ (paren-blink-off ((t (:foreground "azure1"))))
+ (paren-face ((t (:background "lightgoldenrod"))))
+ (paren-match ((t (:background "bisque2"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "black"))))
+ (paren-mismatch-face ((t (:background "DeepPink"))))
+ (paren-no-match-face ((t (:background "yellow"))))
+ (pointer ((t (:background "white" :foreground "blue"))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (shell-option-face ((t (:foreground "gray50"))))
+ (shell-output-2-face ((t (:foreground "green4"))))
+ (shell-output-3-face ((t (:foreground "green4"))))
+ (shell-output-face ((t (:bold t))))
+ (shell-prompt-face ((t (:foreground "blue3"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (text-cursor ((t (:background "Red3" :foreground "bisque"))))
+ (toolbar ((t (:background "Gray80"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (nil))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "SaddleBrown"))))
+ (vhdl-font-lock-function-face ((t (:foreground "DarkCyan"))))
+ (vhdl-font-lock-generic-/constant-face ((t (:foreground "Gold3"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red"))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange"))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-font-lock-type-face ((t (:foreground "ForestGreen"))))
+ (vhdl-font-lock-variable-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:underline t :foreground "Blue"))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:underline t :foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:underline t :foreground "ForestGreen"))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:underline t :foreground "Brown"))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:underline t :foreground "Grey50"))))
+ (vhdl-speedbar-subprogram-face ((t (:foreground "Orchid4"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "steelblue" :foreground "yellow")))))))
+
+(defun color-theme-parus ()
+ "Color theme by Jon K Hellan, created 2000-11-01.
+White on dark blue color theme.
+
+There is some redundancy in the X resources, but I do not have time to
+find out which should go or which should stay:
+
+Emacs*dialog*Background: midnightblue
+Emacs*dialog*Foreground: white
+Emacs*popup*Background: midnightblue
+Emacs*popup*Foreground: white
+emacs*background: #00005a
+emacs*cursorColor: gray90
+emacs*foreground: White
+emacs.dialog*.background: midnightblue
+emacs.menu*.background: midnightblue
+emacs.pane.menubar.background: midnightblue"
+ (interactive)
+ (color-theme-install
+ '(color-theme-parus
+ ((background-color . "#00005a")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "yellow")
+ (foreground-color . "White")
+ (mouse-color . "yellow"))
+ ((gnus-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (paren-face . bold)
+ (paren-mismatch-face . paren-mismatch-face)
+ (paren-no-match-face . paren-no-match-face)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (font-latex-bold-face ((t (:bold t :foreground "OliveDrab"))))
+ (font-latex-italic-face ((t (:italic t :foreground "OliveDrab"))))
+ (font-latex-math-face ((t (:foreground "burlywood"))))
+ (font-latex-sedate-face ((t (:foreground "LightGray"))))
+ (font-latex-string-face ((t (:foreground "LightSalmon"))))
+ (font-latex-warning-face ((t (:foreground "Pink"))))
+ (font-lock-builtin-face ((t (:foreground "#e0e0ff"))))
+ (font-lock-reference-face ((t (:foreground "#e0e0ff"))))
+ (font-lock-comment-face ((t (:foreground "#FFd1d1"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-preprocessor-face ((t (:foreground "Aquamarine"))))
+ (font-lock-function-name-face ((t (:foreground "#b2e4ff"))))
+ (font-lock-keyword-face ((t (:foreground "#a0ffff"))))
+ (font-lock-string-face ((t (:foreground "#efca10"))))
+ (font-lock-doc-string-face ((t (:foreground "#efca10"))))
+ (font-lock-type-face ((t (:foreground "PaleGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:foreground "#dfdfff"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "light cyan"))))
+ (gnus-cite-face-3 ((t (:foreground "light yellow"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "aquamarine3"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise"))))
+ (gnus-header-content-face ((t (:italic t :foreground "#90f490"))))
+ (gnus-header-from-face ((t (:foreground "#aaffaa"))))
+ (gnus-header-name-face ((t (:foreground "#c7e3c7"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "yellow"))))
+ (gnus-header-subject-face ((t (:foreground "#a0f0a0"))))
+ (gnus-signature-face ((t (:italic t))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "pink"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "pink"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (italic ((t (:italic t))))
+ (message-cited-text-face ((t (:foreground "#dfdfff"))))
+ (message-header-cc-face ((t (:bold t :foreground "#a0f0a0"))))
+ (message-header-name-face ((t (:foreground "#c7e3c7"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow"))))
+ (message-header-other-face ((t (:foreground "#db9b9b"))))
+ (message-header-subject-face ((t (:foreground "#a0f0a0"))))
+ (message-header-to-face ((t (:bold t :foreground "#aaffaa"))))
+ (message-header-xheader-face ((t (:foreground "#e2e2ff"))))
+ (message-mml-face ((t (:foreground "#abdbab"))))
+ (message-separator-face ((t (:foreground "#dfdfff"))))
+ (modeline ((t (:background "White" :foreground "#00005a"))))
+ (modeline-buffer-id ((t (:background "White" :foreground "#00005a"))))
+ (modeline-mousable ((t (:background "White" :foreground "#00005a"))))
+ (modeline-mousable-minor-mode ((t (:background "White" :foreground "#00005a"))))
+ (paren-mismatch-face ((t (:background "DeepPink"))))
+ (paren-no-match-face ((t (:background "yellow"))))
+ (region ((t (:background "blue"))))
+ (primary-selection ((t (:background "blue"))))
+ (isearch ((t (:background "blue"))))
+ (secondary-selection ((t (:background "darkslateblue"))))
+ (underline ((t (:underline t))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray")))))))
+
+(defun color-theme-high-contrast ()
+ "High contrast color theme, maybe for the visually impaired.
+Watch out! This will set a very large font-size!
+
+If you want to modify the font as well, you should customize variable
+`color-theme-legal-frame-parameters' to \"\\(color\\|mode\\|font\\|height\\|width\\)$\".
+The default setting will prevent color themes from installing specific
+fonts."
+ (interactive)
+ (color-theme-standard)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-install
+ '(color-theme-high-contrast
+ ((cursor-color . "red")
+ (width . 60)
+ (height . 25)
+ (background . dark))
+ (default ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight bold :height 240 :width normal :family "adobe-courier"))))
+
+ (bold ((t (:bold t :underline t))))
+ (bold-italic ((t (:bold t :underline t))))
+ (font-lock-builtin-face ((t (:bold t :foreground "Red"))))
+ (font-lock-comment-face ((t (:bold t :foreground "Firebrick"))))
+ (font-lock-constant-face ((t (:bold t :underline t :foreground "Blue"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "Blue"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "Purple"))))
+ (font-lock-string-face ((t (:bold t :foreground "DarkGreen"))))
+ (font-lock-type-face ((t (:bold t :foreground "ForestGreen"))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "DarkGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (highlight ((t (:background "black" :foreground "white" :bold 1))))
+ (info-menu-5 ((t (:underline t :bold t))))
+ (info-node ((t (:bold t))))
+ (info-xref ((t (:bold t ))))
+ (italic ((t (:bold t :underline t))))
+ (modeline ((t (:background "black" :foreground "white" :bold 1))))
+ (modeline-buffer-id ((t (:background "black" :foreground "white" :bold 1))))
+ (modeline-mousable ((t (:background "black" :foreground "white" :bold 1))))
+ (modeline-mousable-minor-mode ((t (:background "black" :foreground "white" :bold 1))))
+ (region ((t (:background "black" :foreground "white" :bold 1))))
+ (secondary-selection ((t (:background "black" :foreground "white" :bold 1))))
+ (underline ((t (:bold t :underline t))))))))
+
+(defun color-theme-infodoc ()
+ "Color theme by Frederic Giroud, created 2001-01-18.
+Black on wheat scheme. Based on infodoc (xemacs variant distribution),
+with my favorit fontlock color."
+ (interactive)
+ (color-theme-install
+ '(color-theme-infodoc
+ ((background-color . "wheat")
+ (background-mode . light)
+ (background-toolbar-color . "#000000000000")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#000000000000")
+ (cursor-color . "red")
+ (foreground-color . "black")
+ (top-toolbar-shadow-color . "#ffffffffffff"))
+ nil
+ (default ((t (:bold t))))
+ (blue ((t (:bold t :foreground "blue"))))
+ (bold ((t (:background "wheat" :foreground "black"))))
+ (bold-italic ((t (:bold t :background "wheat" :foreground "black"))))
+ (border-glyph ((t (:bold t))))
+ (calendar-today-face ((t (:underline t :bold t))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:bold t :background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (:bold t :background "wheat" :foreground "purple4"))))
+ (custom-face-tag-face ((t (:underline t :bold t))))
+ (custom-group-tag-face ((t (:underline t :bold t :background "wheat" :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :bold t :background "wheat" :foreground "red"))))
+ (custom-invalid-face ((t (:bold t :background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:bold t :background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:bold t :background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t :bold t))))
+ (custom-set-face ((t (:bold t :background "white" :foreground "blue"))))
+ (custom-state-face ((t (:bold t :background "wheat" :foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t))))
+ (custom-variable-tag-face ((t (:underline t :bold t :background "wheat" :foreground "blue"))))
+ (diary-face ((t (:bold t :foreground "red"))))
+ (display-time-mail-balloon-enhance-face ((t (:bold t :background "wheat" :foreground "black"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:bold t :background "wheat" :foreground "blue"))))
+ (display-time-time-balloon-face ((t (:bold t :background "light salmon" :foreground "dark green"))))
+ (font-lock-comment-face ((t (:bold t :background "wheat" :foreground "turquoise4"))))
+ (font-lock-doc-string-face ((t (:bold t :background "wheat" :foreground "purple4"))))
+ (font-lock-function-name-face ((t (:bold t :background "wheat" :foreground "blue4"))))
+ (font-lock-keyword-face ((t (:bold t :background "wheat" :foreground "dark orchid"))))
+ (font-lock-preprocessor-face ((t (:bold t :background "wheat" :foreground "orchid4"))))
+ (font-lock-reference-face ((t (:bold t :background "wheat" :foreground "red3"))))
+ (font-lock-string-face ((t (:bold t :background "wheat" :foreground "dark goldenrod"))))
+ (font-lock-type-face ((t (:bold t :background "wheat" :foreground "brown"))))
+ (font-lock-variable-name-face ((t (:bold t :background "wheat" :foreground "chocolate"))))
+ (font-lock-warning-face ((t (:bold t :background "wheat" :foreground "black"))))
+ (gdb-arrow-face ((t (:bold t :background "LightGreen" :foreground "black"))))
+ (green ((t (:bold t :foreground "green"))))
+ (gui-button-face ((t (:bold t :background "wheat" :foreground "red"))))
+ (gui-element ((t (:bold t :background "wheat" :foreground "black"))))
+ (highlight ((t (:bold t :background "darkseagreen2" :foreground "dark green"))))
+ (holiday-face ((t (:bold t :background "pink" :foreground "black"))))
+ (hproperty:but-face ((t (:bold t :background "wheat" :foreground "medium violet red"))))
+ (hproperty:flash-face ((t (:bold t :background "wheat" :foreground "gray80"))))
+ (hproperty:highlight-face ((t (:bold t :background "wheat" :foreground "red"))))
+ (hproperty:item-face ((t (:bold t))))
+ (isearch ((t (:bold t :background "pale turquoise" :foreground "blue"))))
+ (italic ((t (:bold t :background "wheat" :foreground "black"))))
+ (left-margin ((t (:bold t :background "wheat" :foreground "black"))))
+ (list-mode-item-selected ((t (:bold t :background "gray68" :foreground "black"))))
+ (message-cited-text ((t (:bold t :background "wheat" :foreground "brown"))))
+ (message-header-contents ((t (:bold t :background "wheat" :foreground "black"))))
+ (message-headers ((t (:bold t :background "wheat" :foreground "black"))))
+ (message-highlighted-header-contents ((t (:bold t :background "wheat" :foreground "blue"))))
+ (message-url ((t (nil))))
+ (modeline ((t (:bold t :background "light salmon" :foreground "dark green"))))
+ (modeline-buffer-id ((t (:bold t :background "light salmon" :foreground "blue4"))))
+ (modeline-mousable ((t (:bold t :background "light salmon" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:bold t :background "light salmon" :foreground "green4"))))
+ (pointer ((t (:bold t :background "wheat" :foreground "red"))))
+ (primary-selection ((t (:bold t :background "medium sea green"))))
+ (red ((t (:bold t :foreground "red"))))
+ (right-margin ((t (:bold t :background "wheat" :foreground "black"))))
+ (secondary-selection ((t (:bold t :background "paleturquoise" :foreground "black"))))
+ (shell-input-face ((t (:bold t :background "wheat" :foreground "blue"))))
+ (shell-option-face ((t (:bold t :background "wheat" :foreground "turquoise4"))))
+ (shell-output-2-face ((t (:bold t :background "wheat" :foreground "dark goldenrod"))))
+ (shell-output-3-face ((t (:bold t :background "wheat" :foreground "dark goldenrod"))))
+ (shell-output-face ((t (:bold t :background "wheat" :foreground "black"))))
+ (shell-prompt-face ((t (:bold t :background "wheat" :foreground "dark orchid"))))
+ (text-cursor ((t (:bold t :background "red" :foreground "wheat"))))
+ (toolbar ((t (:bold t :background "wheat" :foreground "black"))))
+ (underline ((t (:underline t :bold t :background "wheat" :foreground "black"))))
+ (vertical-divider ((t (:bold t))))
+ (widget-button-face ((t (nil))))
+ (widget-button-pressed-face ((t (:bold t :background "wheat" :foreground "red"))))
+ (widget-documentation-face ((t (:bold t :background "wheat" :foreground "dark green"))))
+ (widget-field-face ((t (:bold t :background "gray85"))))
+ (widget-inactive-face ((t (:bold t :background "wheat" :foreground "dim gray"))))
+ (x-face ((t (:bold t :background "wheat" :foreground "black"))))
+ (yellow ((t (:bold t :foreground "yellow"))))
+ (zmacs-region ((t (:bold t :background "lightyellow" :foreground "darkgreen")))))))
+
+(defun color-theme-classic ()
+ "Color theme by Frederic Giroud, created 2001-01-18.
+AntiqueWhite on darkslategrey scheme. Based on Gnome 2, with my favorit
+color foreground-color and fontlock color."
+ (interactive)
+ (color-theme-blue-gnus)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-install
+ '(color-theme-classic
+ ((foreground-color . "AntiqueWhite")
+ (background-color . "darkslategrey")
+ (mouse-color . "Grey")
+ (cursor-color . "Red")
+ (border-color . "black")
+ (background-mode . dark))
+ ((apropos-keybinding-face . underline)
+ (apropos-label-face . italic)
+ (apropos-match-face . secondary-selection)
+ (apropos-property-face . bold-italic)
+ (apropos-symbol-face . info-xref)
+ (goto-address-mail-face . message-header-to-face)
+ (goto-address-mail-mouse-face . secondary-selection)
+ (goto-address-url-face . info-xref)
+ (goto-address-url-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t :foreground "beige"))))
+ (calendar-today-face ((t (:underline t))))
+ (cperl-array-face ((t (:foreground "Yellow"))))
+ (cperl-hash-face ((t (:foreground "White"))))
+ (cperl-nonoverridable-face ((t (:foreground "SkyBlue"))))
+ (custom-button-face ((t (:underline t :foreground "MediumSlateBlue"))))
+ (custom-documentation-face ((t (:foreground "Grey"))))
+ (custom-group-tag-face ((t (:foreground "MediumAquamarine"))))
+ (custom-state-face ((t (:foreground "LightSalmon"))))
+ (custom-variable-tag-face ((t (:foreground "Aquamarine"))))
+ (diary-face ((t (:foreground "IndianRed"))))
+ (erc-action-face ((t (:bold t))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "LightSalmon"))))
+ (erc-error-face ((t (:bold t :foreground "IndianRed"))))
+ (erc-input-face ((t (:foreground "Beige"))))
+ (erc-inverse-face ((t (:background "wheat" :foreground "darkslategrey"))))
+ (erc-notice-face ((t (:foreground "MediumAquamarine"))))
+ (erc-pal-face ((t (:foreground "pale green"))))
+ (erc-prompt-face ((t (:foreground "MediumAquamarine"))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
+ (eshell-ls-backup-face ((t (:foreground "Grey"))))
+ (eshell-ls-clutter-face ((t (:foreground "DimGray"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "MediumSlateBlue"))))
+ (eshell-ls-executable-face ((t (:foreground "Coral"))))
+ (eshell-ls-missing-face ((t (:foreground "black"))))
+ (eshell-ls-picture-face ((t (:foreground "Violet"))))
+ (eshell-ls-product-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-readonly-face ((t (:foreground "Aquamarine"))))
+ (eshell-ls-special-face ((t (:foreground "Gold"))))
+ (eshell-ls-symlink-face ((t (:foreground "White"))))
+ (eshell-ls-unreadable-face ((t (:foreground "DimGray"))))
+ (eshell-prompt-face ((t (:foreground "MediumAquamarine"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "PaleGreen"))))
+ (font-lock-comment-face ((t (:foreground "tomato3"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-doc-string-face ((t (:foreground "LightSalmon3"))))
+ (font-lock-function-name-face ((t (:foreground "SteelBlue1"))))
+ (font-lock-keyword-face ((t (:foreground "cyan1"))))
+ (font-lock-reference-face ((t (:foreground "LightSalmon2"))))
+ (font-lock-string-face ((t (:foreground "LightSalmon3"))))
+ (font-lock-type-face ((t (:foreground "PaleGreen3"))))
+ (font-lock-variable-name-face ((t (:foreground "khaki1"))))
+ (font-lock-warning-face ((t (:bold t :foreground "IndianRed"))))
+ (font-lock-preprocessor-face ((t (:foreground "SkyBlue3"))))
+ (widget-field-face ((t (:background "DarkCyan"))))
+ (custom-group-tag-face ((t(:foreground "brown" :underline t))))
+ (custom-state-face ((t (:foreground "khaki"))))
+ (highlight ((t (:background "PaleGreen" :foreground "DarkGreen"))))
+ (highline-face ((t (:background "SeaGreen"))))
+ (holiday-face ((t (:background "DimGray"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:underline t :bold t :foreground "DodgerBlue1"))))
+ (info-xref ((t (:underline t :foreground "DodgerBlue1"))))
+ (isearch ((t (:foreground "red" :background "CornflowerBlue"))))
+ (italic ((t (:italic t))))
+ (modeline ((t (:background "LightSlateGray" :foreground "AntiqueWhite"))))
+ (modeline-buffer-id ((t (:background "LightSlateGray" :foreground "DarkBlue"))))
+ (modeline-mousable ((t (:background "LightSlateGray" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "LightSlateGray" :foreground "wheat"))))
+ (region ((t (:background "dark cyan" :foreground "cyan"))))
+ (secondary-selection ((t (:background "Aquamarine" :foreground "SlateBlue"))))
+ (show-paren-match-face ((t (:background "Aquamarine" :foreground "SlateBlue"))))
+ (show-paren-mismatch-face ((t (:background "Red" :foreground "White"))))
+ (underline ((t (:underline t))))
+ (widget-field-face ((t (:foreground "LightBlue"))))
+ (widget-inactive-face ((t (:foreground "DimGray"))))
+ (widget-single-line-field-face ((t (:foreground "LightBlue"))))
+ (woman-bold-face ((t (:bold t))))
+ (woman-italic-face ((t (:foreground "beige"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))))))
+
+(defun color-theme-scintilla ()
+ "Color theme by Gordon Messmer, created 2001-02-07.
+Based on the Scintilla editor.
+
+If you want to modify the font as well, you should customize variable
+`color-theme-legal-frame-parameters' to \"\\(color\\|mode\\|font\\|height\\|width\\)$\".
+The default setting will prevent color themes from installing specific
+fonts."
+ (interactive)
+ (color-theme-install
+ ;; The light editor style doesn't seem to look right with
+ ;; the same font that works in the dark editor style.
+ ;; Dark letters on light background just isn't as visible.
+ '(color-theme-scintilla
+ ((font . "-monotype-courier new-bold-r-normal-*-*-140-*-*-m-*-iso8859-1")
+ (width . 95)
+ (height . 40)
+ (background-color . "white")
+ (foreground-color . "black")
+ (background-mode . light)
+ (mouse-color . "grey15")
+ (cursor-color . "grey15"))
+ (default ((t nil)))
+ (font-lock-comment-face ((t (:italic t :foreground "ForestGreen"))))
+ (font-lock-string-face ((t (:foreground "DarkMagenta"))))
+ (font-lock-keyword-face ((t (:foreground "NavyBlue"))))
+ (font-lock-warning-face ((t (:bold t :foreground "VioletRed"))))
+ (font-lock-constant-face ((t (:foreground "Blue"))))
+ (font-lock-type-face ((t (:foreground "NavyBlue"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkCyan"))))
+ (font-lock-function-name-face ((t (:foreground "DarkCyan"))))
+ (font-lock-builtin-face ((t (:foreground "NavyBlue"))))
+ (highline-face ((t (:background "Grey95"))))
+ (show-paren-match-face ((t (:background "Grey80"))))
+ (region ((t (:background "Grey80"))))
+ (highlight ((t (:foreground "ForestGreen"))))
+ (secondary-selection ((t (:background "NavyBlue" :foreground "white"))))
+ (widget-field-face ((t (:background "NavyBlue"))))
+ (widget-single-line-field-face ((t (:background "RoyalBlue")))))) )
+
+(defun color-theme-gtk-ide ()
+ "Color theme by Gordon Messmer, created 2001-02-07.
+Inspired by a GTK IDE whose name I've forgotten.
+
+If you want to modify the font as well, you should customize variable
+`color-theme-legal-frame-parameters' to \"\\(color\\|mode\\|font\\|height\\|width\\)$\".
+The default setting will prevent color themes from installing specific
+fonts."
+ ;; The light editor style doesn't seem to look right with
+ ;; the same font that works in the dark editor style.
+ ;; Dark letters on light background just isn't as visible.
+ (interactive)
+ (color-theme-install
+ '(color-theme-gtk-ide
+ ((font . "-monotype-courier new-medium-r-normal-*-*-120-*-*-m-*-iso8859-15")
+ (width . 95)
+ (height . 45)
+ (background-color . "white")
+ (foreground-color . "black")
+ (background-mode . light)
+ (mouse-color . "grey15")
+ (cursor-color . "grey15"))
+ (default ((t nil)))
+ (font-lock-comment-face ((t (:italic t :foreground "grey55"))))
+ (font-lock-string-face ((t (:foreground "DarkRed"))))
+ (font-lock-keyword-face ((t (:foreground "DarkBlue"))))
+ (font-lock-warning-face ((t (:bold t :foreground "VioletRed"))))
+ (font-lock-constant-face ((t (:foreground "OliveDrab"))))
+ (font-lock-type-face ((t (:foreground "SteelBlue4"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-function-name-face ((t (:foreground "SlateBlue"))))
+ (font-lock-builtin-face ((t (:foreground "ForestGreen"))))
+ (highline-face ((t (:background "grey95"))))
+ (show-paren-match-face ((t (:background "grey80"))))
+ (region ((t (:background "grey80"))))
+ (highlight ((t (:background "LightSkyBlue"))))
+ (secondary-selection ((t (:background "grey55"))))
+ (widget-field-face ((t (:background "navy"))))
+ (widget-single-line-field-face ((t (:background "royalblue")))))) )
+
+(defun color-theme-midnight ()
+ "Color theme by Gordon Messmer, created 2001-02-07.
+A color theme inspired by a certain IDE for Windows. It's all from memory,
+since I only used that software in college.
+
+If you want to modify the font as well, you should customize variable
+`color-theme-legal-frame-parameters' to \"\\(color\\|mode\\|font\\|height\\|width\\)$\".
+The default setting will prevent color themes from installing specific
+fonts."
+ (interactive)
+ (color-theme-install
+ '(color-theme-midnight
+ ((font . "fixed")
+ (width . 130)
+ (height . 50)
+ (background-color . "black")
+ (foreground-color . "grey85")
+ (background-mode . dark)
+ (mouse-color . "grey85")
+ (cursor-color . "grey85"))
+ (default ((t (nil))))
+ (font-lock-comment-face ((t (:italic t :foreground "grey60"))))
+ (font-lock-string-face ((t (:foreground "Magenta"))))
+ (font-lock-keyword-face ((t (:foreground "Cyan"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (font-lock-constant-face ((t (:foreground "OliveDrab"))))
+ (font-lock-type-face ((t (:foreground "DarkCyan"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-function-name-face ((t (:foreground "SlateBlue"))))
+ (font-lock-builtin-face ((t (:foreground "SkyBlue"))))
+ (highline-face ((t (:background "grey12"))))
+ (setnu-line-number-face ((t (:background "Grey15" :foreground "White" :bold t))))
+ (show-paren-match-face ((t (:background "grey30"))))
+ (region ((t (:background "grey15"))))
+ (highlight ((t (:background "blue"))))
+ (secondary-selection ((t (:background "navy"))))
+ (widget-field-face ((t (:background "navy"))))
+ (widget-single-line-field-face ((t (:background "royalblue")))))) )
+
+(defun color-theme-jedit-grey ()
+ "Color theme by Gordon Messmer, created 2001-02-07.
+Based on a screenshot of jedit.
+
+If you want to modify the font as well, you should customize variable
+`color-theme-legal-frame-parameters' to \"\\(color\\|mode\\|font\\|height\\|width\\)$\".
+The default setting will prevent color themes from installing specific
+fonts."
+ (interactive)
+ (color-theme-install
+ '(color-theme-jedit-grey
+ ((font . "fixed")
+ (width . 130)
+ (height . 50)
+ (background-color . "grey77")
+ (foreground-color . "black")
+ (background-mode . light)
+ (mouse-color . "black")
+ (cursor-color . "black"))
+ (default ((t (nil))))
+ (font-lock-comment-face ((t (:italic t :foreground "RoyalBlue4"))))
+ (font-lock-string-face ((t (:foreground "Gold4"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "DarkRed"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (font-lock-constant-face ((t (:foreground "DarkCyan"))))
+ (font-lock-type-face ((t (:foreground "DarkRed"))))
+ (font-lock-function-name-face ((t (:foreground "Green4"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "DarkRed"))))
+ (highline-face ((t (:background "grey84"))))
+ (setnu-line-number-face ((t (:background "White" :foreground "MediumPurple3" :italic t))))
+ (show-paren-match-face ((t (:background "grey60"))))
+ (region ((t (:background "grey70"))))
+ (highlight ((t (:background "grey90"))))
+ (secondary-selection ((t (:background "white"))))
+ (widget-field-face ((t (:background "royalblue"))))
+ (widget-single-line-field-face ((t (:background "royalblue")))))) )
+
+(defun color-theme-snow ()
+ "Color theme by Nicolas Rist, created 2001-03-08.
+Black on gainsboro. In Emacs, the text background is a shade darker
+than the frame background: Gainsboro instead of snow. This makes the
+structure of the text clearer without being too agressive on the eyes.
+On XEmacs, this doesn't really work as the frame and the default face
+allways use the same foreground and background colors.
+The color theme includes gnus, message, font-lock, sgml, and speedbar."
+ (interactive)
+ (color-theme-install
+ '(color-theme-snow
+ ((background-color . "snow2")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "RoyalBlue2")
+ (foreground-color . "black")
+ (mouse-color . "black"))
+ ((gnus-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (:background "gainsboro" :foreground "dark slate gray"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (calendar-today-face ((t (:underline t))))
+ (custom-button-face ((t (:background "gainsboro" :foreground "dark cyan"))))
+ (custom-documentation-face ((t (:background "gainsboro"))))
+ (diary-face ((t (:foreground "red"))))
+ (fg:black ((t (:foreground "black"))))
+ (font-lock-builtin-face ((t (:background "gainsboro" :foreground "medium orchid"))))
+ (font-lock-comment-face ((t (:background "gainsboro" :foreground "SteelBlue3"))))
+ (font-lock-constant-face ((t (:background "gainsboro" :foreground "orange3"))))
+ (font-lock-function-name-face ((t (:background "gainsboro" :foreground "blue3"))))
+ (font-lock-keyword-face ((t (:background "gainsboro" :foreground "red3"))))
+ (font-lock-string-face ((t (:background "gainsboro" :foreground "SpringGreen3"))))
+ (font-lock-type-face ((t (:background "gainsboro" :foreground "dark cyan"))))
+ (font-lock-variable-name-face ((t (:background "gainsboro" :foreground "purple2"))))
+ (font-lock-warning-face ((t (:bold t :background "gainsboro" :foreground "red"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gui-button-face ((t (:foreground "light grey"))))
+ (highlight ((t (:background "LightSteelBlue1"))))
+ (holiday-face ((t (:background "pink"))))
+ (ibuffer-marked-face ((t (:foreground "red"))))
+ (italic ((t (:italic t))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "dark slate gray" :foreground "gainsboro"))))
+ (modeline-buffer-id ((t (:background "dark slate gray" :foreground "gainsboro"))))
+ (modeline-mousable ((t (:background "dark slate gray" :foreground "gainsboro"))))
+ (modeline-mousable-minor-mode ((t (:background "dark slate gray" :foreground "gainsboro"))))
+ (region ((t (:background "lavender"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (sgml-comment-face ((t (:foreground "dark green"))))
+ (sgml-doctype-face ((t (:foreground "maroon"))))
+ (sgml-end-tag-face ((t (:foreground "blue2"))))
+ (sgml-entity-face ((t (:foreground "red2"))))
+ (sgml-ignored-face ((t (:background "gray90" :foreground "maroon"))))
+ (sgml-ms-end-face ((t (:foreground "maroon"))))
+ (sgml-ms-start-face ((t (:foreground "maroon"))))
+ (sgml-pi-face ((t (:foreground "maroon"))))
+ (sgml-sgml-face ((t (:foreground "maroon"))))
+ (sgml-short-ref-face ((t (:foreground "goldenrod"))))
+ (sgml-start-tag-face ((t (:foreground "blue2"))))
+ (show-paren-match-face ((t (:background "SlateGray1"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "dark turquoise" :foreground "white"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (underline ((t (:underline t)))))))
+
+(defun color-theme-montz ()
+ "Color theme by Brady Montz, created 2001-03-08.
+Black on Gray.
+Includes dired, bbdb, font-lock, gnus, message, viper, and widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-montz
+ ((background-color . "gray80")
+ (background-mode . light)
+ (background-toolbar-color . "#cccccccccccc")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#7a7a7a7a7a7a")
+ (cursor-color . "Red3")
+ (foreground-color . "black")
+ (top-toolbar-shadow-color . "#f5f5f5f5f5f5")
+ (viper-saved-cursor-color-in-replace-mode . "Red3"))
+ ((gnus-mouse-face . highlight)
+ (paren-match-face . paren-face-match)
+ (paren-mismatch-face . paren-face-mismatch)
+ (paren-no-match-face . paren-face-no-match)
+ (smiley-mouse-face . highlight))
+ (default ((t (nil))))
+ (bbdb-company ((t (:italic t))))
+ (bbdb-field-name ((t (:bold t))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (:underline t))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (nil))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t))))
+ (dired-face-executable ((t (:foreground "SeaGreen"))))
+ (dired-face-flagged ((t (:background "LightSlateGray"))))
+ (dired-face-marked ((t (:background "PaleVioletRed"))))
+ (dired-face-permissions ((t (:background "grey75" :foreground "black"))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (dired-face-symlink ((t (:foreground "cyan"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (font-lock-builtin-face ((t (:foreground "red3"))))
+ (font-lock-comment-face ((t (:foreground "blue"))))
+ (font-lock-constant-face ((t (:foreground "red3"))))
+ (font-lock-doc-string-face ((t (:foreground "mediumvioletred"))))
+ (font-lock-function-name-face ((t (:foreground "firebrick"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "black"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "mediumvioletred"))))
+ (font-lock-type-face ((t (:foreground "darkgreen"))))
+ (font-lock-variable-name-face ((t (:foreground "black"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4"))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-picons-face ((t (:background "white" :foreground "black"))))
+ (gnus-picons-xbm-face ((t (:background "white" :foreground "black"))))
+ (gnus-signature-face ((t (:italic t))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-x-face ((t (:background "white" :foreground "black"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (nil))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (info-node ((t (:bold t))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68" :foreground "black"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (nil))))
+ (modeline-buffer-id ((t (:background "Gray80" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "Gray80" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "Gray80" :foreground "green4"))))
+ (paren-face-match ((t (:background "turquoise"))))
+ (paren-face-mismatch ((t (:background "purple" :foreground "white"))))
+ (paren-face-no-match ((t (:background "yellow" :foreground "black"))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (text-cursor ((t (:background "Red3" :foreground "gray80"))))
+ (toolbar ((t (nil))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (nil))))
+ (viper-minibuffer-emacs-face ((t (:background "gray80" :foreground "black"))))
+ (viper-minibuffer-insert-face ((t (:background "gray80" :foreground "black"))))
+ (viper-minibuffer-vi-face ((t (:background "gray80" :foreground "black"))))
+ (viper-replace-overlay-face ((t (:background "black" :foreground "white"))))
+ (viper-search-face ((t (:background "black" :foreground "white"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "black" :foreground "white")))))))
+
+(defun color-theme-aalto-light ()
+ "Color theme by Jari Aalto, created 2001-03-08.
+Black on light yellow.
+Used for Win32 on a Nokia446Xpro monitor.
+Includes cvs, font-lock, gnus, message, sgml, widget"
+ (interactive)
+ (color-theme-install
+ '(color-theme-aalto-light
+ ((background-color . "#FFFFE0")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "black")
+ (mouse-color . "LawnGreen"))
+ ((gnus-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (tinyreplace-:face . highlight)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (calendar-today-face ((t (:underline t))))
+ (cvs-filename-face ((t (:foreground "blue4"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:bold t :foreground "blue4"))))
+ (cvs-marked-face ((t (:bold t :foreground "green3"))))
+ (cvs-msg-face ((t (:italic t))))
+ (cvs-need-action-face ((t (:foreground "orange"))))
+ (cvs-unknown-face ((t (:foreground "red"))))
+ (diary-face ((t (:foreground "red"))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green"))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:foreground "Firebrick"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-function-name-face ((t (:foreground "Blue"))))
+ (font-lock-keyword-face ((t (:foreground "Purple"))))
+ (font-lock-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-type-face ((t (:foreground "ForestGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4"))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-signature-face ((t (:italic t))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (holiday-face ((t (:background "pink"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (italic ((t (:italic t))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "black" :foreground "white"))))
+ (modeline-buffer-id ((t (:background "black" :foreground "white"))))
+ (modeline-mousable ((t (:background "black" :foreground "white"))))
+ (modeline-mousable-minor-mode ((t (:background "black" :foreground "white"))))
+ (region ((t (:background "gray"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (sgml-comment-face ((t (:foreground "dark turquoise"))))
+ (sgml-doctype-face ((t (:foreground "red"))))
+ (sgml-end-tag-face ((t (:foreground "blue"))))
+ (sgml-entity-face ((t (:foreground "magenta"))))
+ (sgml-ignored-face ((t (:background "gray60" :foreground "gray40"))))
+ (sgml-ms-end-face ((t (:foreground "green"))))
+ (sgml-ms-start-face ((t (:foreground "green"))))
+ (sgml-pi-face ((t (:foreground "lime green"))))
+ (sgml-sgml-face ((t (:foreground "brown"))))
+ (sgml-short-ref-face ((t (:foreground "deep sky blue"))))
+ (sgml-start-tag-face ((t (:foreground "blue"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (underline ((t (:underline t))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85")))))))
+
+(defun color-theme-aalto-dark ()
+ "Color theme by Jari Aalto, created 2001-03-08.
+White on Deep Sky Blue 3.
+Used for Unix Exceed on a Nokia446Xpro monitor.
+Includes font-lock, info, and message."
+ (interactive)
+ (color-theme-install
+ '(color-theme-aalto-dark
+ ((background-color . "DeepSkyBlue3")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "yellow")
+ (foreground-color . "white")
+ (mouse-color . "black"))
+ ((ispell-highlight-face . highlight)
+ (list-matching-lines-face . bold)
+ (tinyreplace-:face . highlight)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t :background "blue3" :foreground "white"))))
+ (bold-italic ((t (:italic t :bold t :foreground "blue3"))))
+ (calendar-today-face ((t (:underline t))))
+ (diary-face ((t (:foreground "red"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "OrangeRed"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-function-name-face ((t (:foreground "LightSkyBlue"))))
+ (font-lock-keyword-face ((t (:foreground "Cyan"))))
+ (font-lock-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-type-face ((t (:foreground "PaleGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (highlight ((t (:background "blue3" :foreground "white"))))
+ (holiday-face ((t (:background "pink"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (italic ((t (:italic t :background "gray"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4"))))
+ (message-header-name-face ((t (:foreground "DarkGreen"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow"))))
+ (message-header-other-face ((t (:foreground "#b00000"))))
+ (message-header-subject-face ((t (:foreground "green3"))))
+ (message-header-to-face ((t (:bold t :foreground "green2"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "blue3"))))
+ (modeline ((t (:background "white" :foreground "DeepSkyBlue3"))))
+ (modeline-buffer-id ((t (:background "white" :foreground "DeepSkyBlue3"))))
+ (modeline-mousable ((t (:background "white" :foreground "DeepSkyBlue3"))))
+ (modeline-mousable-minor-mode ((t (:background "white" :foreground "DeepSkyBlue3"))))
+ (region ((t (:background "gray"))))
+ (secondary-selection ((t (:background "darkslateblue"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (underline ((t (:underline t)))))))
+
+(defun color-theme-blippblopp ()
+ "Color theme by Thomas Sicheritz-Ponten, created 2001-03-12.
+Used by researchers at Uppsala University and the Center for Biological
+Sequence Analysis at the Technical University of Denmark. (As some of my
+swedish friends couldn't pronounce Sicheritz - they choose to transform
+it to something more \"swedish\": Blippblopp :-)
+Includes font-lock and message."
+ (interactive)
+ (color-theme-install
+ '(color-theme-blippblopp
+ ((background-color . "white")
+ (background-mode . light)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (cursor-color . "Red3")
+ (foreground-color . "black")
+ (mouse-color . "black")
+ (top-toolbar-shadow-color . "#fffffbeeffff")
+ (viper-saved-cursor-color-in-replace-mode . "Red3"))
+ ((ispell-highlight-face . highlight))
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (excerpt ((t (:italic t))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "NavyBlue"))))
+ (fg:black ((t (:foreground "black"))))
+ (fixed ((t (:bold t))))
+ (font-lock-builtin-face ((t (:foreground "red3"))))
+ (font-lock-comment-face ((t (:foreground "orange"))))
+ (font-lock-constant-face ((t (:foreground "red3"))))
+ (font-lock-doc-string-face ((t (:foreground "darkgreen"))))
+ (font-lock-exit-face ((t (:foreground "green"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "red"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "steelblue"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "green4"))))
+ (font-lock-type-face ((t (:bold t :foreground "blue"))))
+ (font-lock-variable-name-face ((t (:foreground "black"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (green ((t (:foreground "green"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "dimgray" :foreground "lemonchiffon"))))
+ (modeline-buffer-id ((t (:background "dimgray" :foreground "green3"))))
+ (modeline-mousable ((t (:background "dimgray" :foreground "orange"))))
+ (modeline-mousable-minor-mode ((t (:background "dimgray" :foreground "blue4"))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "gray65"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (text-cursor ((t (:background "Red3" :foreground "white"))))
+ (toolbar ((t (:background "Gray80"))))
+ (underline ((t (:underline t))))
+ (vcursor ((t (:underline t :background "cyan" :foreground "blue"))))
+ (vertical-divider ((t (:background "Gray80"))))
+ (xref-keyword-face ((t (:foreground "blue"))))
+ (xref-list-pilot-face ((t (:foreground "navy"))))
+ (xref-list-symbol-face ((t (:foreground "navy"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "gray65")))))))
+
+(defun color-theme-hober (&optional preview)
+ "Does all sorts of crazy stuff.
+Originally based on color-theme-standard, so I probably still have some
+setting that I haven't changed. I also liberally copied settings from
+the other themes in this package. The end result isn't much like the
+other ones; I hope you like it."
+ (interactive)
+ (color-theme-install
+ '(color-theme-hober
+ ((foreground-color . "#c0c0c0")
+ (background-color . "black")
+ (mouse-color . "black")
+ (cursor-color . "medium turquoise")
+ (border-color . "black")
+ (background-mode . dark))
+ (default ((t (nil))))
+ (modeline ((t (:foreground "white" :background "darkslateblue"))))
+ (modeline-buffer-id ((t (:foreground "white" :background "darkslateblue"))))
+ (modeline-mousable ((t (:foreground "white" :background "darkslateblue"))))
+ (modeline-mousable-minor-mode ((t (:foreground "white" :background "darkslateblue"))))
+ (highlight ((t (:foreground "black" :background "#c0c0c0"))))
+ (bold ((t (:bold t))))
+ (italic ((t (:italic t))))
+ (bold-italic ((t (:bold t :italic t))))
+ (region ((t (:foreground "white" :background "darkslateblue"))))
+ (zmacs-region ((t (:foreground "white" :background "darkslateblue"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (underline ((t (:underline t))))
+ (diary-face ((t (:foreground "red"))))
+ (calendar-today-face ((t (:underline t))))
+ (holiday-face ((t (:background "pink"))))
+ (widget-documentation-face ((t (:foreground "dark green" :background "white"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red" :background "black"))))
+ (widget-field-face ((t (:background "gray85" :foreground "black"))))
+ (widget-single-line-field-face ((t (:background "gray85" :foreground "black"))))
+ (widget-inactive-face ((t (:foreground "dim gray" :background "red"))))
+ (fixed ((t (:bold t))))
+ (excerpt ((t (:italic t))))
+ (term-default-fg ((t (nil))))
+ (term-default-bg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-bold ((t (:bold t))))
+ (term-underline ((t (:underline t))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-white ((t (:foreground "#c0c0c0"))))
+ (term-whitebg ((t (:background "#c0c0c0"))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-red ((t (:foreground "#ef8171"))))
+ (term-redbg ((t (:background "#ef8171"))))
+ (term-green ((t (:foreground "#e5f779"))))
+ (term-greenbg ((t (:background "#e5f779"))))
+ (term-yellow ((t (:foreground "#fff796"))))
+ (term-yellowbg ((t (:background "#fff796"))))
+ (term-blue ((t (:foreground "#4186be"))))
+ (term-bluebg ((t (:background "#4186be"))))
+ (term-magenta ((t (:foreground "#ef9ebe"))))
+ (term-magentabg ((t (:background "#ef9ebe"))))
+ (term-cyan ((t (:foreground "#71bebe"))))
+ (term-cyanbg ((t (:background "#71bebe"))))
+ (font-lock-keyword-face ((t (:foreground "#00ffff"))))
+ (font-lock-comment-face ((t (:foreground "Red"))))
+ (font-lock-string-face ((t (:foreground "#ffff00"))))
+ (font-lock-constant-face ((t (:foreground "#00ff00"))))
+ (font-lock-builtin-face ((t (:foreground "#ffaa00"))))
+ (font-lock-type-face ((t (:foreground "Coral"))))
+ (font-lock-warning-face ((t (:foreground "Red" :bold t))))
+ (font-lock-function-name-face ((t (:foreground "#4186be"))))
+ (font-lock-variable-name-face ((t (:foreground "white" :bold t))))
+ (message-header-to-face ((t (:foreground "#4186be" :bold t))))
+ (message-header-cc-face ((t (:foreground "#4186be"))))
+ (message-header-subject-face ((t (:foreground "#4186be" :bold t))))
+ (message-header-newsgroups-face ((t (:foreground "Coral" :bold t))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-name-face ((t (:foreground "white"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (message-cited-text-face ((t (:foreground "white"))))
+ (gnus-header-from-face ((t (:foreground "Coral"))))
+ (gnus-header-subject-face ((t (:foreground "#4186be"))))
+ (gnus-header-newsgroups-face ((t (:foreground "#4186be" :italic t))))
+ (gnus-header-name-face ((t (:foreground "white"))))
+ (gnus-header-content-face ((t (:foreground "#4186be" :italic t))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-list ((t (:bold nil :foreground "red"))))
+ (gnus-group-news-1-face ((t (:foreground "ForestGreen" :bold t))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-2-face ((t (:foreground "CadetBlue4" :bold t))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-low-face ((t (:foreground "DarkGreen" :bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-mail-1-face ((t (:foreground "DeepPink3" :bold t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-2-face ((t (:foreground "HotPink3" :bold t))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-3-face ((t (:foreground "magenta4" :bold t))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-low-face ((t (:foreground "DeepPink4" :bold t))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-summary-cancelled-face ((t (:foreground "yellow" :background "black"))))
+ (gnus-summary-high-ticked-face ((t (:foreground "firebrick" :bold t))))
+ (gnus-summary-low-ticked-face ((t (:foreground "firebrick" :italic t))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-high-ancient-face ((t (:foreground "RoyalBlue" :bold t))))
+ (gnus-summary-low-ancient-face ((t (:foreground "RoyalBlue" :italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-high-read-face ((t (:foreground "DarkGreen" :bold t))))
+ (gnus-summary-low-read-face ((t (:foreground "DarkGreen" :italic t))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t))))
+ (gnus-emphasis-bold-italic ((t (:bold t :italic t))))
+ (gnus-emphasis-underline-bold-italic ((t (:bold t :italic t :underline t))))
+ (gnus-signature-face ((t (:foreground "white"))))
+ (gnus-cite-face-1 ((t (:foreground "Khaki"))))
+ (gnus-cite-face-2 ((t (:foreground "Coral"))))
+ (gnus-cite-face-3 ((t (:foreground "#4186be"))))
+ (gnus-cite-face-4 ((t (:foreground "yellow green"))))
+ (gnus-cite-face-5 ((t (:foreground "IndianRed"))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highlight-changes-delete-face ((t (:foreground "red" :underline t))))
+ (show-paren-match-face ((t (:foreground "white" :background "purple"))))
+ (show-paren-mismatch-face ((t (:foreground "white" :background "red"))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (cperl-array-face ((t (:foreground "Blue" :bold t :background "lightyellow2"))))
+ (cperl-hash-face ((t (:foreground "Red" :bold t :italic t :background "lightyellow2"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (sgml-start-tag-face ((t (:foreground "mediumspringgreen"))))
+ (sgml-ignored-face ((t (:foreground "gray20" :background "gray60"))))
+ (sgml-doctype-face ((t (:foreground "orange"))))
+ (sgml-sgml-face ((t (:foreground "yellow"))))
+ (sgml-end-tag-face ((t (:foreground "greenyellow"))))
+ (sgml-entity-face ((t (:foreground "gold"))))
+ (flyspell-incorrect-face ((t (:foreground "OrangeRed" :bold t :underline t))))
+ (flyspell-duplicate-face ((t (:foreground "Gold3" :bold t :underline t)))))))
+
+(defun color-theme-bharadwaj ()
+ "Color theme by Girish Bharadwaj, created 2001-03-28.
+Black on gainsboro. Includes BBDB, custom, cperl, cvs, dired, ediff,
+erc, eshell, font-latex, font-lock, gnus, info, message, paren, sgml,
+shell, speedbar, term, vhdl, viper, widget, woman, xref. Wow!"
+ (interactive)
+ (color-theme-install
+ '(color-theme-bharadwaj
+ ((background-color . "gainsboro")
+ (background-mode . light)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "black")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (cursor-color . "grey15")
+ (foreground-color . "black")
+ (mouse-color . "grey15")
+ (top-toolbar-shadow-color . "#fffffbeeffff")
+ (viper-saved-cursor-color-in-replace-mode . "Red3"))
+ ((gnus-mouse-face . highlight)
+ (smiley-mouse-face . highlight))
+ (default ((t (nil))))
+ (bbdb-company ((t (nil))))
+ (bbdb-field-name ((t (:bold t))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (:underline t))))
+ (blank-space-face ((t (nil))))
+ (blank-tab-face ((t (nil))))
+ (blue ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:bold t))))
+ (border-glyph ((t (nil))))
+ (calendar-today-face ((t (:underline t))))
+ (comint-input-face ((t (:foreground "deepskyblue"))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue"))))
+ (cperl-hash-face ((t (:bold t :background "lightyellow2" :foreground "Red"))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (custom-button-face ((t (:bold t))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :bold t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :bold t :foreground "blue"))))
+ (cvs-filename-face ((t (:foreground "blue4"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:bold t :foreground "blue4"))))
+ (cvs-marked-face ((t (:bold t :foreground "green3"))))
+ (cvs-msg-face ((t (nil))))
+ (cvs-need-action-face ((t (:foreground "orange"))))
+ (cvs-unknown-face ((t (:foreground "red"))))
+ (diary-face ((t (:bold t :foreground "red"))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t :foreground "forestgreen"))))
+ (dired-face-executable ((t (:foreground "indianred"))))
+ (dired-face-flagged ((t (:background "SlateGray"))))
+ (dired-face-marked ((t (:background "darkblue" :foreground "deepskyblue"))))
+ (dired-face-permissions ((t (nil))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (dired-face-symlink ((t (:foreground "grey95"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (erc-action-face ((t (:bold t))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (nil))))
+ (erc-error-face ((t (:bold t))))
+ (erc-input-face ((t (nil))))
+ (erc-inverse-face ((t (nil))))
+ (erc-notice-face ((t (nil))))
+ (erc-pal-face ((t (nil))))
+ (erc-prompt-face ((t (nil))))
+ (erc-underline-face ((t (nil))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid"))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Blue"))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "ForestGreen"))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red"))))
+ (eshell-ls-picture-face ((t (nil))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta"))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "DarkCyan"))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Red"))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green"))))
+ (excerpt ((t (nil))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "NavyBlue"))))
+ (fg:black ((t (:foreground "black"))))
+ (fixed ((t (:bold t))))
+ (flyspell-duplicate-face ((t (:underline t :bold t :foreground "Gold3"))))
+ (flyspell-incorrect-face ((t (:underline t :bold t :foreground "OrangeRed"))))
+ (font-latex-bold-face ((t (nil))))
+ (font-latex-italic-face ((t (nil))))
+ (font-latex-math-face ((t (nil))))
+ (font-latex-sedate-face ((t (nil))))
+ (font-latex-string-face ((t (nil))))
+ (font-latex-warning-face ((t (nil))))
+ (font-lock-builtin-face ((t (:foreground "ForestGreen"))))
+ (font-lock-comment-face ((t (:foreground "grey55"))))
+ (font-lock-constant-face ((t (:foreground "OliveDrab"))))
+ (font-lock-doc-string-face ((t (:bold t :foreground "blue4"))))
+ (font-lock-exit-face ((t (nil))))
+ (font-lock-function-name-face ((t (:italic t :bold t :foreground "SlateBlue"))))
+ (font-lock-keyword-face ((t (:foreground "DarkBlue"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "DarkRed"))))
+ (font-lock-type-face ((t (:foreground "SteelBlue4"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "VioletRed"))))
+ (fringe ((t (:background "grey95"))))
+ (gnus-cite-attribution-face ((t (:bold t))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:bold t))))
+ (gnus-emphasis-highlight-words ((t (nil))))
+ (gnus-emphasis-italic ((t (nil))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t))))
+ (gnus-filterhist-face-1 ((t (nil))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:foreground "indianred4"))))
+ (gnus-header-from-face ((t (:bold t :foreground "red3"))))
+ (gnus-header-name-face ((t (:bold t :foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:bold t :foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "red4"))))
+ (gnus-picons-face ((t (:background "white" :foreground "black"))))
+ (gnus-picons-xbm-face ((t (:background "white" :foreground "black"))))
+ (gnus-signature-face ((t (nil))))
+ (gnus-splash ((t (nil))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (nil))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (:bold t))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-x-face ((t (:background "white" :foreground "black"))))
+ (green ((t (nil))))
+ (gui-button-face ((t (:background "grey75"))))
+ (gui-element ((t (:background "Gray80"))))
+ (highlight ((t (:background "LightSkyBlue"))))
+ (highlight-changes-delete-face ((t (:underline t :foreground "red"))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highline-face ((t (:background "grey95"))))
+ (holiday-face ((t (:background "pink"))))
+ (html-helper-italic-face ((t (nil))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:bold t))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (:background "yellow"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (nil))))
+ (lazy-highlight-face ((t (:bold t :foreground "dark magenta"))))
+ (left-margin ((t (nil))))
+ (linemenu-face ((t (nil))))
+ (list-mode-item-selected ((t (nil))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:bold t))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "white" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "white" :foreground "black"))))
+ (modeline-mousable ((t (:background "white" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "white" :foreground "black"))))
+ (paren-blink-off ((t (:foreground "gray80"))))
+ (paren-face-match ((t (:background "turquoise"))))
+ (paren-face-mismatch ((t (:background "purple" :foreground "white"))))
+ (paren-face-no-match ((t (:background "yellow" :foreground "black"))))
+ (paren-match ((t (:background "darkseagreen2"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "black"))))
+ (paren-mismatch-face ((t (:bold t))))
+ (paren-no-match-face ((t (:bold t))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (nil))))
+ (red ((t (nil))))
+ (region ((t (:background "grey80"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "grey55"))))
+ (sgml-comment-face ((t (:foreground "dark turquoise"))))
+ (sgml-doctype-face ((t (nil))))
+ (sgml-end-tag-face ((t (nil))))
+ (sgml-entity-face ((t (nil))))
+ (sgml-ignored-face ((t (nil))))
+ (sgml-ms-end-face ((t (:foreground "green"))))
+ (sgml-ms-start-face ((t (:foreground "green"))))
+ (sgml-pi-face ((t (:foreground "lime green"))))
+ (sgml-sgml-face ((t (nil))))
+ (sgml-short-ref-face ((t (:foreground "deep sky blue"))))
+ (sgml-start-tag-face ((t (nil))))
+ (shell-option-face ((t (:foreground "blue"))))
+ (shell-output-2-face ((t (:foreground "darkseagreen"))))
+ (shell-output-3-face ((t (:foreground "slategrey"))))
+ (shell-output-face ((t (:foreground "palegreen"))))
+ (shell-prompt-face ((t (:foreground "red"))))
+ (show-paren-match-face ((t (:background "grey80"))))
+ (show-paren-mismatch-face ((t (:bold t :background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:bold t :foreground "green4"))))
+ (speedbar-directory-face ((t (:bold t :foreground "blue4"))))
+ (speedbar-file-face ((t (:bold t :foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (swbuff-current-buffer-face ((t (:bold t))))
+ (template-message-face ((t (:bold t))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-bold ((t (:bold t))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-green ((t (:foreground "green"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-red ((t (:foreground "red"))))
+ (term-redbg ((t (:background "red"))))
+ (term-underline ((t (:underline t))))
+ (term-white ((t (:foreground "white"))))
+ (term-whitebg ((t (:background "white"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (text-cursor ((t (:background "grey15" :foreground "gainsboro"))))
+ (toolbar ((t (nil))))
+ (underline ((t (:underline t))))
+ (vc-annotate-face-0046FF ((t (nil))))
+ (vcursor ((t (:underline t :background "cyan" :foreground "blue"))))
+ (vertical-divider ((t (nil))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red"))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange"))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:underline t :foreground "Blue"))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:underline t :foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:underline t :foreground "ForestGreen"))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:underline t :foreground "Brown"))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:underline t :foreground "Grey50"))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (vvb-face ((t (:background "pink" :foreground "black"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "navy" :foreground "white"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "royalblue" :foreground "white"))))
+ (woman-bold-face ((t (:bold t))))
+ (woman-italic-face ((t (nil))))
+ (woman-unknown-face ((t (nil))))
+ (xref-keyword-face ((t (:foreground "blue"))))
+ (xref-list-pilot-face ((t (:foreground "navy"))))
+ (xref-list-symbol-face ((t (:foreground "navy"))))
+ (yellow ((t (nil))))
+ (zmacs-region ((t (:background "royalblue")))))))
+
+(defun color-theme-oswald ()
+ "Color theme by Tom Oswald, created 2001-04-18.
+Green on black, includes font-lock, show-paren, and ediff."
+ (interactive)
+ (color-theme-install
+ '(color-theme-oswald
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "green")
+ (mouse-color . "black"))
+ ((blank-space-face . blank-space-face)
+ (blank-tab-face . blank-tab-face)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (blank-space-face ((t (:background "LightGray"))))
+ (blank-tab-face ((t (:background "green" :foreground "black"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (font-lock-builtin-face ((t (:italic t :bold t :foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:italic t :foreground "LightGoldenrod4"))))
+ (font-lock-constant-face ((t (:italic t :foreground "HotPink"))))
+ (font-lock-doc-string-face ((t (:italic t :foreground "orange"))))
+ (font-lock-function-name-face ((t (:italic t :bold t :foreground "red"))))
+ (font-lock-keyword-face ((t (:foreground "red"))))
+ (font-lock-preprocessor-face ((t (:italic t :foreground "HotPink"))))
+ (font-lock-string-face ((t (:italic t :foreground "orange"))))
+ (font-lock-reference-face ((t (:italic t :bold t :foreground "LightSteelBlue"))))
+ (font-lock-type-face ((t (:italic t :foreground "LightSlateBlue"))))
+ (font-lock-variable-name-face ((t (:underline t :foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (highlight ((t (:background "yellow" :foreground "red"))))
+ (isearch ((t (:background "dim gray" :foreground "aquamarine"))))
+ (ispell-face ((t (:bold t :background "#3454b4" :foreground "yellow"))))
+ (italic ((t (:italic t))))
+ (modeline ((t (:background "green" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "green" :foreground "black"))))
+ (modeline-mousable ((t (:background "green" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "green" :foreground "black"))))
+ (region ((t (:background "dim gray" :foreground "aquamarine"))))
+ (secondary-selection ((t (:background "darkslateblue" :foreground "light goldenrod"))))
+ (show-paren-match-face ((t (:background "turquoise" :foreground "black"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (underline ((t (:underline t))))
+ (zmacs-region ((t (:background "dim gray" :foreground "aquamarine")))))))
+
+(defun color-theme-salmon-diff ()
+ "Salmon and aquamarine faces for diff and change-log modes.
+This is intended for other color themes to use (eg. `color-theme-gnome2')."
+ (color-theme-install
+ '(color-theme-salmon-diff
+ nil
+ (change-log-acknowledgement-face ((t (:foreground "LightBlue"))))
+ (change-log-conditionals-face ((t (:bold t :weight bold :foreground "Aquamarine"))))
+ (change-log-date-face ((t (:foreground "LightSalmon"))))
+ (change-log-email-face ((t (:bold t :weight bold :foreground "Aquamarine"))))
+ (change-log-file-face ((t (:bold t :weight bold :foreground "Aquamarine"))))
+ (change-log-function-face ((t (:bold t :weight bold :foreground "Aquamarine"))))
+ (change-log-list-face ((t (:foreground "Salmon"))))
+ (change-log-name-face ((t (:foreground "Aquamarine"))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (:foreground "grey70"))))
+ (diff-file-header-face ((t (:bold t))))
+ (diff-function-face ((t (:foreground "grey70"))))
+ (diff-header-face ((t (:foreground "light salmon"))))
+ (diff-hunk-header-face ((t (:foreground "light salmon"))))
+ (diff-index-face ((t (:bold t))))
+ (diff-nonexistent-face ((t (:bold t))))
+ (diff-removed-face ((t (nil))))
+ (log-view-message-face ((t (:foreground "light salmon")))))))
+
+(defun color-theme-robin-hood ()
+ "`color-theme-gnome2' with navajo white on green.
+This theme tries to avoid underlined and italic faces, because
+the fonts either look ugly, or do not exist. The author himself
+uses neep, for example."
+ (interactive)
+ (color-theme-gnome2)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-install
+ '(color-theme-robin-hood
+ ((foreground-color . "navajo white")
+ (background-color . "#304020"))
+ ((CUA-mode-read-only-cursor-color . "white")
+ (help-highlight-face . info-xref)
+ (list-matching-lines-buffer-name-face . bold))
+ (default ((t (nil))))
+ (button ((t (:bold t))))
+ (calendar-today-face ((t (:foreground "lemon chiffon"))))
+ (custom-button-face ((t (:bold t :foreground "DodgerBlue1"))))
+ (diary-face ((t (:bold t :foreground "yellow"))))
+ (fringe ((t (:background "#003700"))))
+ (header-line ((t (:background "#030" :foreground "#AA7"))))
+ (holiday-face ((t (:bold t :foreground "peru"))))
+ (ido-subdir-face ((t (:foreground "MediumSlateBlue"))))
+ (isearch ((t (:foreground "pink" :background "red"))))
+ (isearch-lazy-highlight-face ((t (:foreground "red"))))
+ (menu ((t (:background "#304020" :foreground "navajo white"))))
+ (minibuffer-prompt ((t (:foreground "pale green"))))
+ (modeline ((t (:background "dark olive green" :foreground "wheat" :box (:line-width 1 :style released-button)))))
+ (mode-line-inactive ((t (:background "dark olive green" :foreground "khaki" :box (:line-width 1 :style released-button)))))
+ (semantic-dirty-token-face ((t (:background "grey22"))))
+ (tool-bar ((t (:background "#304020" :foreground "wheat" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lemon chiffon" :foreground "black"))))))))
+
+(defun color-theme-snowish ()
+ "Color theme by Girish Bharadwaj, created 2001-05-17.
+Dark slate gray on snow2, lots of blue colors.
+Includes custom, eshell, font-lock, gnus, html-helper,
+hyper-apropos, jde, message, paren, semantic, speedbar,
+term, widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-snowish
+ ((background-color . "snow2")
+ (background-mode . light)
+ (cursor-color . "Red3")
+ (foreground-color . "darkslategray"))
+ ((buffers-tab-face . buffers-tab)
+ (gnus-mouse-face . highlight)
+ (sgml-set-face . t)
+ (smiley-mouse-face . highlight))
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t :foreground "peru"))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (nil))))
+ (buffers-tab ((t (:background "snow2" :foreground "darkslategray"))))
+ (custom-button-face ((t (:bold t))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "gray85"))))
+ (custom-comment-tag-face ((t (:foreground "blue4"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (cyan ((t (:foreground "cyan"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid"))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Blue"))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "ForestGreen"))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red"))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta"))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "Dark Cyan"))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Red"))))
+ (font-lock-builtin-face ((t (:underline t :foreground "blue"))))
+ (font-lock-comment-face ((t (:foreground "snow4"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-doc-string-face ((t (:foreground "mediumblue"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "darkblue"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "dodgerblue"))))
+ (font-lock-preprocessor-face ((t (:underline t :foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "darkviolet"))))
+ (font-lock-type-face ((t (:foreground "goldenrod"))))
+ (font-lock-variable-name-face ((t (:foreground "tomato"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (gnus-cite-attribution-face ((t (nil))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (nil))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (nil))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t))))
+ (gnus-emphasis-underline-italic ((t (:underline t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:foreground "indianred4"))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-picons-face ((t (:background "white" :foreground "black"))))
+ (gnus-picons-xbm-face ((t (:background "white" :foreground "black"))))
+ (gnus-signature-face ((t (nil))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (nil))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-x-face ((t (:background "white" :foreground "black"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:background "#D4D0C8" :foreground "black"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (html-helper-bold-face ((t (:bold t))))
+ (html-helper-bold-italic-face ((t (nil))))
+ (html-helper-builtin-face ((t (:underline t :foreground "blue3"))))
+ (html-helper-italic-face ((t (:foreground "medium sea green"))))
+ (html-helper-underline-face ((t (:underline t))))
+ (html-tag-face ((t (:bold t))))
+ (hyper-apropos-documentation ((t (:foreground "darkred"))))
+ (hyper-apropos-heading ((t (:bold t))))
+ (hyper-apropos-hyperlink ((t (:foreground "blue4"))))
+ (hyper-apropos-major-heading ((t (:bold t))))
+ (hyper-apropos-section-heading ((t (nil))))
+ (hyper-apropos-warning ((t (:bold t :foreground "red"))))
+ (info-menu-6 ((t (nil))))
+ (isearch ((t (:background "paleturquoise"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (nil))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-bug-breakpoint-marker ((t (:background "yellow" :foreground "red"))))
+ (jde-java-font-lock-link-face ((t (:underline t :foreground "blue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "RosyBrown"))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68" :foreground "darkslategray"))))
+ (magenta ((t (:foreground "magenta"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (nil))))
+ (modeline-buffer-id ((t (:background "#D4D0C8" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "#D4D0C8" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "#D4D0C8" :foreground "green4"))))
+ (paren-blink-off ((t (:foreground "snow2"))))
+ (paren-match ((t (:background "darkseagreen2"))))
+ (paren-mismatch ((t (:background "snow2" :foreground "darkslategray"))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (semantic-intangible-face ((t (:foreground "gray25"))))
+ (semantic-read-only-face ((t (:background "gray25"))))
+ (senator-momentary-highlight-face ((t (:background "gray70"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (template-message-face ((t (:bold t))))
+ (term-blue-bold-face ((t (:bold t :background "snow2" :foreground "blue"))))
+ (term-blue-face ((t (:foreground "blue"))))
+ (term-blue-inv-face ((t (:background "blue"))))
+ (term-blue-ul-face ((t (:underline t :background "snow2" :foreground "blue"))))
+ (term-cyan-bold-face ((t (:bold t :background "snow2" :foreground "cyan"))))
+ (term-cyan-face ((t (:foreground "cyan"))))
+ (term-cyan-inv-face ((t (:background "cyan"))))
+ (term-cyan-ul-face ((t (:underline t :background "snow2" :foreground "cyan"))))
+ (term-default-bold-face ((t (:bold t :background "snow2" :foreground "darkslategray"))))
+ (term-default-face ((t (:background "snow2" :foreground "darkslategray"))))
+ (term-default-inv-face ((t (:background "darkslategray" :foreground "snow2"))))
+ (term-default-ul-face ((t (:underline t :background "snow2" :foreground "darkslategray"))))
+ (term-green-bold-face ((t (:bold t :background "snow2" :foreground "green"))))
+ (term-green-face ((t (:foreground "green"))))
+ (term-green-inv-face ((t (:background "green"))))
+ (term-green-ul-face ((t (:underline t :background "snow2" :foreground "green"))))
+ (term-magenta-bold-face ((t (:bold t :background "snow2" :foreground "magenta"))))
+ (term-magenta-face ((t (:foreground "magenta"))))
+ (term-magenta-inv-face ((t (:background "magenta"))))
+ (term-magenta-ul-face ((t (:underline t :background "snow2" :foreground "magenta"))))
+ (term-red-bold-face ((t (:bold t :background "snow2" :foreground "red"))))
+ (term-red-face ((t (:foreground "red"))))
+ (term-red-inv-face ((t (:background "red"))))
+ (term-red-ul-face ((t (:underline t :background "snow2" :foreground "red"))))
+ (term-white-bold-face ((t (:bold t :background "snow2" :foreground "white"))))
+ (term-white-face ((t (:foreground "white"))))
+ (term-white-inv-face ((t (:background "snow2"))))
+ (term-white-ul-face ((t (:underline t :background "snow2" :foreground "white"))))
+ (term-yellow-bold-face ((t (:bold t :background "snow2" :foreground "yellow"))))
+ (term-yellow-face ((t (:foreground "yellow"))))
+ (term-yellow-inv-face ((t (:background "yellow"))))
+ (term-yellow-ul-face ((t (:underline t :background "snow2" :foreground "yellow"))))
+ (text-cursor ((t (:background "Red3" :foreground "snow2"))))
+ (toolbar ((t (nil))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (nil))))
+ (white ((t (:foreground "white"))))
+ (widget ((t (nil))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "gray65")))))))
+
+(defun color-theme-dark-laptop ()
+ "Color theme by Laurent Michel, created 2001-05-24.
+Includes custom, fl, font-lock, gnus, message, widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-dark-laptop
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "yellow")
+ (foreground-color . "white")
+ (mouse-color . "sienna1"))
+ ((gnus-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "light blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "pink"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "lime green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "light blue"))))
+ (fl-comment-face ((t (:foreground "pink"))))
+ (fl-doc-string-face ((t (:foreground "purple"))))
+ (fl-function-name-face ((t (:foreground "red"))))
+ (fl-keyword-face ((t (:foreground "cyan"))))
+ (fl-string-face ((t (:foreground "green"))))
+ (fl-type-face ((t (:foreground "yellow"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "OrangeRed"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-doc-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-function-name-face ((t (:foreground "LightSkyBlue"))))
+ (font-lock-keyword-face ((t (:foreground "Cyan"))))
+ (font-lock-preprocessor-face ((t (:foreground "Aquamarine"))))
+ (font-lock-reference-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-type-face ((t (:foreground "PaleGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:bold t :foreground "deep sky blue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:bold t :foreground "cyan"))))
+ (gnus-cite-face-3 ((t (:bold t :foreground "gold"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:bold t :foreground "chocolate"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "aquamarine3"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise"))))
+ (gnus-header-content-face ((t (:italic t :foreground "forest green"))))
+ (gnus-header-from-face ((t (:bold t :foreground "spring green"))))
+ (gnus-header-name-face ((t (:foreground "deep sky blue"))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "purple"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "orange"))))
+ (gnus-signature-face ((t (:bold t :foreground "khaki"))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "pink"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "pink"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (italic ((t (:italic t))))
+ (message-cited-text-face ((t (:bold t :foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4"))))
+ (message-header-name-face ((t (:bold t :foreground "orange"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "violet"))))
+ (message-header-other-face ((t (:bold t :foreground "chocolate"))))
+ (message-header-subject-face ((t (:bold t :foreground "yellow"))))
+ (message-header-to-face ((t (:bold t :foreground "cyan"))))
+ (message-header-xheader-face ((t (:bold t :foreground "light blue"))))
+ (message-mml-face ((t (:bold t :background "Green3"))))
+ (message-separator-face ((t (:foreground "blue3"))))
+ (modeline ((t (:background "white" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "white" :foreground "black"))))
+ (modeline-mousable ((t (:background "white" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "white" :foreground "black"))))
+ (region ((t (:background "blue"))))
+ (primary-selection ((t (:background "blue"))))
+ (isearch ((t (:background "blue"))))
+ (zmacs-region ((t (:background "blue"))))
+ (secondary-selection ((t (:background "darkslateblue"))))
+ (underline ((t (:underline t))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray")))))))
+
+(defun color-theme-taming-mr-arneson ()
+ "Color theme by Erik Arneson, created 2001-06-12.
+Light sky blue on black. Includes bbdb, cperl, custom, cvs, diff,
+dired, font-lock, html-helper, hyper-apropos, info, isearch, man,
+message, paren, shell, and widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-taming-mr-arneson
+ ((background-color . "black")
+ (background-mode . light)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (cursor-color . "Red3")
+ (foreground-color . "LightSkyBlue")
+ (top-toolbar-shadow-color . "#fffffbeeffff"))
+ ((buffers-tab-face . buffers-tab)
+ (cperl-here-face . font-lock-string-face)
+ (cperl-invalid-face quote default)
+ (cperl-pod-face . font-lock-comment-face)
+ (cperl-pod-head-face . font-lock-variable-name-face)
+ (ispell-highlight-face . highlight)
+ (vc-mode-face . highlight)
+ (vm-highlight-url-face . bold-italic)
+ (vm-highlighted-header-face . bold)
+ (vm-mime-button-face . gui-button-face)
+ (vm-summary-highlight-face . bold))
+ (default ((t (nil))))
+ (bbdb-company ((t (nil))))
+ (bbdb-field-name ((t (:bold t))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (:underline t))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:bold t :foreground "yellow"))))
+ (border-glyph ((t (nil))))
+ (buffers-tab ((t (:background "black" :foreground "LightSkyBlue"))))
+ (cperl-array-face ((t (:bold t :foreground "SkyBlue2"))))
+ (cperl-hash-face ((t (:foreground "LightBlue2"))))
+ (cperl-invalid-face ((t (:foreground "white"))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (custom-button-face ((t (:bold t))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:foreground "white"))))
+ (custom-comment-tag-face ((t (:foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "white"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (cvs-filename-face ((t (:foreground "white"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:foreground "green"))))
+ (cvs-marked-face ((t (:bold t :foreground "green3"))))
+ (cvs-msg-face ((t (:foreground "red"))))
+ (cvs-need-action-face ((t (:foreground "yellow"))))
+ (cvs-unknown-face ((t (:foreground "grey"))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-file-header-face ((t (:bold t :background "grey70"))))
+ (diff-hunk-header-face ((t (:background "grey85"))))
+ (diff-index-face ((t (:bold t :background "grey70"))))
+ (diff-removed-face ((t (nil))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t :foreground "SkyBlue2"))))
+ (dired-face-executable ((t (:foreground "Green"))))
+ (dired-face-flagged ((t (:background "LightSlateGray"))))
+ (dired-face-header ((t (:background "grey75" :foreground "black"))))
+ (dired-face-marked ((t (:background "PaleVioletRed"))))
+ (dired-face-permissions ((t (:background "grey75" :foreground "black"))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (dired-face-symlink ((t (:foreground "cyan"))))
+ (excerpt ((t (nil))))
+ (fixed ((t (:bold t))))
+ (font-lock-builtin-face ((t (:foreground "red3"))))
+ (font-lock-comment-face ((t (:foreground "red"))))
+ (font-lock-constant-face ((t (nil))))
+ (font-lock-doc-string-face ((t (:foreground "turquoise"))))
+ (font-lock-function-name-face ((t (:foreground "white"))))
+ (font-lock-keyword-face ((t (:foreground "green"))))
+ (font-lock-preprocessor-face ((t (:foreground "green3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "turquoise"))))
+ (font-lock-type-face ((t (:foreground "steelblue"))))
+ (font-lock-variable-name-face ((t (:foreground "magenta2"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (nil))))
+ (highlight ((t (:background "darkseagreen2" :foreground "blue"))))
+ (html-helper-bold-face ((t (:bold t))))
+ (html-helper-italic-face ((t (:bold t :foreground "yellow"))))
+ (html-helper-underline-face ((t (:underline t))))
+ (hyper-apropos-documentation ((t (:foreground "white"))))
+ (hyper-apropos-heading ((t (:bold t))))
+ (hyper-apropos-hyperlink ((t (:foreground "sky blue"))))
+ (hyper-apropos-major-heading ((t (:bold t))))
+ (hyper-apropos-section-heading ((t (:bold t))))
+ (hyper-apropos-warning ((t (:bold t :foreground "red"))))
+ (info-node ((t (:bold t :foreground "yellow"))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (:background "paleturquoise" :foreground "dark red"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (:bold t :foreground "yellow"))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68" :foreground "dark green"))))
+ (man-bold ((t (:bold t))))
+ (man-heading ((t (:bold t))))
+ (man-italic ((t (:foreground "yellow"))))
+ (man-xref ((t (:underline t))))
+ (message-cited-text ((t (:foreground "orange"))))
+ (message-header-contents ((t (:foreground "white"))))
+ (message-headers ((t (:bold t :foreground "orange"))))
+ (message-highlighted-header-contents ((t (:bold t))))
+ (message-url ((t (:bold t :foreground "pink"))))
+ (mmm-face ((t (:background "black" :foreground "green"))))
+ (modeline ((t (nil))))
+ (modeline-buffer-id ((t (:background "Gray80" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "Gray80" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "Gray80" :foreground "green4"))))
+ (paren-blink-off ((t (:foreground "gray80"))))
+ (paren-match ((t (:background "dark blue"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "LightSkyBlue"))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray65" :foreground "DarkBlue"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "gray65" :foreground "DarkBlue"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise" :foreground "black"))))
+ (shell-option-face ((t (:foreground "blue4"))))
+ (shell-output-2-face ((t (:foreground "green4"))))
+ (shell-output-3-face ((t (:foreground "green4"))))
+ (shell-output-face ((t (:bold t))))
+ (shell-prompt-face ((t (:foreground "red4"))))
+ (text-cursor ((t (:background "Red3" :foreground "black"))))
+ (toolbar ((t (:background "Gray80" :foreground "black"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (nil))))
+ (vm-xface ((t (:background "white" :foreground "black"))))
+ (vmpc-pre-sig-face ((t (:foreground "forestgreen"))))
+ (vmpc-sig-face ((t (:foreground "steelblue"))))
+ (widget ((t (nil))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85" :foreground "black"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (x-face ((t (:background "white" :foreground "black"))))
+ (xrdb-option-name-face ((t (:foreground "red"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "gray65")))))))
+
+(defun color-theme-digital-ofs1 ()
+ "Color theme by Gareth Owen, created 2001-06-13.
+This works well on an old, beat-up Digital Unix box with its 256 colour
+display, on which other color themes hog too much of the palette.
+Black on some shade of dark peach. Includes bbdb, cperl, custom,
+cvs, diff, dired, ediff, erc, eshell, font-latex, font-lock, gnus,
+highlight, hproperty, html-helper, hyper-apropos, info, jde, man,
+message, paren, searchm, semantic, sgml, shell, speedbar, term,
+vhdl, viper, w3m, widget, woman, x-symbol, xref."
+ (interactive)
+ (color-theme-install
+ '(color-theme-digital-ofs1
+ ((background-color . "#CA94AA469193")
+ (background-mode . light)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "black")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (cursor-color . "Black")
+ (foreground-color . "Black")
+ (mouse-color . "Black")
+ (top-toolbar-shadow-color . "#fffffbeeffff")
+ (viper-saved-cursor-color-in-replace-mode . "Red3"))
+ ((Man-overstrike-face . bold)
+ (Man-underline-face . underline)
+ (gnus-mouse-face . highlight)
+ (goto-address-mail-face . italic)
+ (goto-address-mail-mouse-face . secondary-selection)
+ (goto-address-url-face . bold)
+ (goto-address-url-mouse-face . highlight)
+ (ispell-highlight-face . highlight)
+ (list-matching-lines-face . bold)
+ (rmail-highlight-face . font-lock-function-name-face)
+ (view-highlight-face . highlight))
+ (default ((t (:bold t))))
+ (bbdb-company ((t (:italic t))))
+ (bbdb-field-name ((t (:bold t))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (:underline t))))
+ (blank-space-face ((t (nil))))
+ (blank-tab-face ((t (nil))))
+ (blue ((t (:bold t :foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (:bold t))))
+ (buffers-tab ((t (:background "black" :foreground "LightSkyBlue"))))
+ (calendar-today-face ((t (:underline t :bold t :foreground "white"))))
+ (comint-input-face ((t (nil))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue"))))
+ (cperl-hash-face ((t (:italic t :bold t :background "lightyellow2" :foreground "Red"))))
+ (cperl-here-face ((t (nil))))
+ (cperl-invalid-face ((t (:foreground "white"))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (cperl-pod-face ((t (nil))))
+ (cperl-pod-head-face ((t (nil))))
+ (custom-button-face ((t (:bold t))))
+ (custom-changed-face ((t (:bold t :background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:foreground "white"))))
+ (custom-comment-tag-face ((t (:foreground "white"))))
+ (custom-documentation-face ((t (:bold t))))
+ (custom-face-tag-face ((t (:underline t :bold t))))
+ (custom-group-tag-face ((t (:underline t :bold t :foreground "DarkBlue"))))
+ (custom-group-tag-face-1 ((t (:underline t :bold t :foreground "red"))))
+ (custom-invalid-face ((t (:bold t :background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:bold t :background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:bold t :background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t :bold t))))
+ (custom-set-face ((t (:bold t :background "white" :foreground "blue"))))
+ (custom-state-face ((t (:bold t :foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :bold t :foreground "blue"))))
+ (cvs-filename-face ((t (:foreground "white"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:bold t :foreground "green"))))
+ (cvs-marked-face ((t (:bold t :foreground "green3"))))
+ (cvs-msg-face ((t (:italic t :foreground "red"))))
+ (cvs-need-action-face ((t (:foreground "yellow"))))
+ (cvs-unknown-face ((t (:foreground "grey"))))
+ (cyan ((t (:foreground "cyan"))))
+ (diary-face ((t (:bold t :foreground "red"))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-file-header-face ((t (:bold t :background "grey70"))))
+ (diff-hunk-header-face ((t (:background "grey85"))))
+ (diff-index-face ((t (:bold t :background "grey70"))))
+ (diff-removed-face ((t (nil))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t))))
+ (dired-face-executable ((t (:foreground "SeaGreen"))))
+ (dired-face-flagged ((t (:background "LightSlateGray"))))
+ (dired-face-header ((t (:background "grey75" :foreground "black"))))
+ (dired-face-marked ((t (:background "PaleVioletRed"))))
+ (dired-face-permissions ((t (:background "grey75" :foreground "black"))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (dired-face-symlink ((t (:foreground "cyan"))))
+ (display-time-mail-balloon-enhance-face ((t (:bold t :background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:bold t :foreground "blue"))))
+ (display-time-time-balloon-face ((t (:bold t :foreground "red"))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (erc-action-face ((t (:bold t))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (nil))))
+ (erc-error-face ((t (:bold t))))
+ (erc-input-face ((t (nil))))
+ (erc-inverse-face ((t (nil))))
+ (erc-notice-face ((t (nil))))
+ (erc-pal-face ((t (nil))))
+ (erc-prompt-face ((t (nil))))
+ (erc-underline-face ((t (nil))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid"))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Blue"))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "ForestGreen"))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red"))))
+ (eshell-ls-picture-face ((t (:foreground "Violet"))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta"))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "DarkCyan"))))
+ (eshell-ls-text-face ((t (:foreground "medium aquamarine"))))
+ (eshell-ls-todo-face ((t (:bold t :foreground "aquamarine"))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Red"))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green"))))
+ (excerpt ((t (:italic t))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "NavyBlue"))))
+ (fg:black ((t (:foreground "black"))))
+ (fixed ((t (:bold t))))
+ (fl-comment-face ((t (:foreground "medium purple"))))
+ (fl-doc-string-face ((t (nil))))
+ (fl-function-name-face ((t (:foreground "green"))))
+ (fl-keyword-face ((t (:foreground "LightGreen"))))
+ (fl-string-face ((t (:foreground "light coral"))))
+ (fl-type-face ((t (:foreground "cyan"))))
+ (flyspell-duplicate-face ((t (:underline t :bold t :foreground "Gold3"))))
+ (flyspell-incorrect-face ((t (:underline t :bold t :foreground "OrangeRed"))))
+ (font-latex-bold-face ((t (:bold t))))
+ (font-latex-italic-face ((t (:italic t))))
+ (font-latex-math-face ((t (nil))))
+ (font-latex-sedate-face ((t (nil))))
+ (font-latex-string-face ((t (nil))))
+ (font-latex-warning-face ((t (nil))))
+ (font-lock-builtin-face ((t (:italic t :bold t :foreground "Orchid"))))
+ (font-lock-comment-face ((t (:bold t :foreground "Firebrick"))))
+ (font-lock-constant-face ((t (:italic t :bold t :foreground "CadetBlue"))))
+ (font-lock-doc-string-face ((t (:italic t :bold t :foreground "green4"))))
+ (font-lock-emphasized-face ((t (:bold t))))
+ (font-lock-exit-face ((t (:foreground "green"))))
+ (font-lock-function-name-face ((t (:italic t :bold t :foreground "Blue"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "dark olive green"))))
+ (font-lock-other-emphasized-face ((t (:italic t :bold t))))
+ (font-lock-other-type-face ((t (:bold t :foreground "DarkBlue"))))
+ (font-lock-preprocessor-face ((t (:italic t :bold t :foreground "blue3"))))
+ (font-lock-reference-face ((t (:italic t :bold t :foreground "red3"))))
+ (font-lock-special-comment-face ((t (nil))))
+ (font-lock-special-keyword-face ((t (nil))))
+ (font-lock-string-face ((t (:italic t :bold t :foreground "DarkBlue"))))
+ (font-lock-type-face ((t (:italic t :bold t :foreground "DarkGreen"))))
+ (font-lock-variable-name-face ((t (:italic t :bold t :foreground "darkgreen"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (fringe ((t (:background "grey95"))))
+ (gdb-arrow-face ((t (:bold t))))
+ (gnus-cite-attribution-face ((t (:italic t :bold t))))
+ (gnus-cite-face-1 ((t (:bold t :foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:bold t :foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:bold t :foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:bold t :foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-cite-face-list ((t (nil))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-filterhist-face-1 ((t (nil))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4"))))
+ (gnus-header-from-face ((t (:bold t :foreground "red3"))))
+ (gnus-header-name-face ((t (:bold t :foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "red4"))))
+ (gnus-picons-face ((t (:background "white" :foreground "black"))))
+ (gnus-picons-xbm-face ((t (:background "white" :foreground "black"))))
+ (gnus-signature-face ((t (:italic t :bold t))))
+ (gnus-splash ((t (nil))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:italic t :bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :bold t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (:bold t))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-x-face ((t (:background "white" :foreground "black"))))
+ (green ((t (:bold t :foreground "green"))))
+ (gui-button-face ((t (:bold t :background "grey75" :foreground "black"))))
+ (gui-element ((t (:bold t :background "Gray80"))))
+ (highlight ((t (:bold t :background "darkseagreen2"))))
+ (highlight-changes-delete-face ((t (:underline t :foreground "red"))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highline-face ((t (:background "black" :foreground "white"))))
+ (holiday-face ((t (:bold t :background "pink" :foreground "white"))))
+ (hproperty:but-face ((t (:bold t))))
+ (hproperty:flash-face ((t (:bold t))))
+ (hproperty:highlight-face ((t (:bold t))))
+ (hproperty:item-face ((t (:bold t))))
+ (html-helper-bold-face ((t (:bold t))))
+ (html-helper-bold-italic-face ((t (nil))))
+ (html-helper-builtin-face ((t (:underline t :foreground "blue3"))))
+ (html-helper-italic-face ((t (:italic t :bold t :foreground "yellow"))))
+ (html-helper-underline-face ((t (:underline t))))
+ (html-tag-face ((t (:bold t))))
+ (hyper-apropos-documentation ((t (:foreground "white"))))
+ (hyper-apropos-heading ((t (:bold t))))
+ (hyper-apropos-hyperlink ((t (:foreground "sky blue"))))
+ (hyper-apropos-major-heading ((t (:bold t))))
+ (hyper-apropos-section-heading ((t (:bold t))))
+ (hyper-apropos-warning ((t (:bold t :foreground "red"))))
+ (ibuffer-marked-face ((t (:foreground "red"))))
+ (info-menu-5 ((t (:underline t :bold t))))
+ (info-menu-6 ((t (nil))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (:bold t :background "paleturquoise"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (ispell-face ((t (:bold t))))
+ (italic ((t (:italic t :bold t))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-bug-breakpoint-marker ((t (:background "yellow" :foreground "red"))))
+ (jde-java-font-lock-link-face ((t (:underline t :foreground "blue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "RosyBrown"))))
+ (lazy-highlight-face ((t (:bold t :foreground "dark magenta"))))
+ (left-margin ((t (:bold t))))
+ (linemenu-face ((t (nil))))
+ (list-mode-item-selected ((t (:bold t :background "gray68"))))
+ (magenta ((t (:foreground "magenta"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (man-bold ((t (:bold t))))
+ (man-heading ((t (:bold t))))
+ (man-italic ((t (:foreground "yellow"))))
+ (man-xref ((t (:underline t))))
+ (message-cited-text ((t (:bold t :foreground "orange"))))
+ (message-cited-text-face ((t (:bold t :foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-contents ((t (:italic t :bold t :foreground "white"))))
+ (message-header-name-face ((t (:bold t :foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:bold t :foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:bold t :foreground "blue"))))
+ (message-headers ((t (:bold t :foreground "orange"))))
+ (message-highlighted-header-contents ((t (:bold t))))
+ (message-mml-face ((t (:bold t :foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (message-url ((t (:bold t :foreground "pink"))))
+ (mmm-face ((t (:background "black" :foreground "green"))))
+ (modeline ((t (:bold t :background "Black" :foreground "#CA94AA469193"))))
+ (modeline-buffer-id ((t (:bold t :background "Gray80" :foreground "blue4"))))
+ (modeline-mousable ((t (:bold t :background "Gray80" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:bold t :background "Gray80" :foreground "green4"))))
+ (my-tab-face ((t (nil))))
+ (nil ((t (nil))))
+ (p4-diff-del-face ((t (:bold t))))
+ (paren-blink-off ((t (:foreground "gray80"))))
+ (paren-face ((t (nil))))
+ (paren-face-match ((t (nil))))
+ (paren-face-mismatch ((t (nil))))
+ (paren-face-no-match ((t (nil))))
+ (paren-match ((t (:background "darkseagreen2"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "black"))))
+ (paren-mismatch-face ((t (:bold t :background "DeepPink" :foreground "white"))))
+ (paren-no-match-face ((t (:bold t :background "yellow" :foreground "white"))))
+ (pointer ((t (:bold t))))
+ (primary-selection ((t (:bold t :background "gray65"))))
+ (red ((t (:bold t :foreground "red"))))
+ (region ((t (:bold t :background "gray"))))
+ (right-margin ((t (:bold t))))
+ (searchm-buffer ((t (:bold t))))
+ (searchm-button ((t (:bold t))))
+ (searchm-field ((t (nil))))
+ (searchm-field-label ((t (:bold t))))
+ (searchm-highlight ((t (:bold t))))
+ (secondary-selection ((t (:bold t :background "paleturquoise"))))
+ (semantic-intangible-face ((t (:foreground "gray25"))))
+ (semantic-read-only-face ((t (:background "gray25"))))
+ (senator-momentary-highlight-face ((t (:background "gray70"))))
+ (setnu-line-number-face ((t (:italic t :bold t))))
+ (sgml-comment-face ((t (:foreground "dark green"))))
+ (sgml-doctype-face ((t (:foreground "maroon"))))
+ (sgml-end-tag-face ((t (:foreground "blue2"))))
+ (sgml-entity-face ((t (:foreground "red2"))))
+ (sgml-ignored-face ((t (:background "gray90" :foreground "maroon"))))
+ (sgml-ms-end-face ((t (:foreground "maroon"))))
+ (sgml-ms-start-face ((t (:foreground "maroon"))))
+ (sgml-pi-face ((t (:foreground "maroon"))))
+ (sgml-sgml-face ((t (:foreground "maroon"))))
+ (sgml-short-ref-face ((t (:foreground "goldenrod"))))
+ (sgml-start-tag-face ((t (:foreground "blue2"))))
+ (shell-input-face ((t (:bold t))))
+ (shell-option-face ((t (:bold t :foreground "blue4"))))
+ (shell-output-2-face ((t (:bold t :foreground "green4"))))
+ (shell-output-3-face ((t (:bold t :foreground "green4"))))
+ (shell-output-face ((t (:bold t))))
+ (shell-prompt-face ((t (:bold t :foreground "red4"))))
+ (show-paren-match-face ((t (:bold t :background "turquoise"))))
+ (show-paren-mismatch-face ((t (:bold t :background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:bold t :foreground "magenta"))))
+ (speedbar-directory-face ((t (:bold t :foreground "orchid"))))
+ (speedbar-file-face ((t (:bold t :foreground "pink"))))
+ (speedbar-highlight-face ((t (:background "black"))))
+ (speedbar-selected-face ((t (:underline t :foreground "cyan"))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (swbuff-current-buffer-face ((t (:bold t :foreground "red"))))
+ (template-message-face ((t (:bold t))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-blue-bold-face ((t (:bold t :background "snow2" :foreground "blue"))))
+ (term-blue-face ((t (:foreground "blue"))))
+ (term-blue-inv-face ((t (:background "blue"))))
+ (term-blue-ul-face ((t (:underline t :background "snow2" :foreground "blue"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-bold ((t (:bold t))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-cyan-bold-face ((t (:bold t :background "snow2" :foreground "cyan"))))
+ (term-cyan-face ((t (:foreground "cyan"))))
+ (term-cyan-inv-face ((t (:background "cyan"))))
+ (term-cyan-ul-face ((t (:underline t :background "snow2" :foreground "cyan"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-bold-face ((t (:bold t :background "snow2" :foreground "darkslategray"))))
+ (term-default-face ((t (:background "snow2" :foreground "darkslategray"))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-default-inv-face ((t (:background "darkslategray" :foreground "snow2"))))
+ (term-default-ul-face ((t (:underline t :background "snow2" :foreground "darkslategray"))))
+ (term-green ((t (:foreground "green"))))
+ (term-green-bold-face ((t (:bold t :background "snow2" :foreground "green"))))
+ (term-green-face ((t (:foreground "green"))))
+ (term-green-inv-face ((t (:background "green"))))
+ (term-green-ul-face ((t (:underline t :background "snow2" :foreground "green"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-magenta-bold-face ((t (:bold t :background "snow2" :foreground "magenta"))))
+ (term-magenta-face ((t (:foreground "magenta"))))
+ (term-magenta-inv-face ((t (:background "magenta"))))
+ (term-magenta-ul-face ((t (:underline t :background "snow2" :foreground "magenta"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-red ((t (:foreground "red"))))
+ (term-red-bold-face ((t (:bold t :background "snow2" :foreground "red"))))
+ (term-red-face ((t (:foreground "red"))))
+ (term-red-inv-face ((t (:background "red"))))
+ (term-red-ul-face ((t (:underline t :background "snow2" :foreground "red"))))
+ (term-redbg ((t (:background "red"))))
+ (term-underline ((t (:underline t))))
+ (term-white ((t (:foreground "white"))))
+ (term-white-bold-face ((t (:bold t :background "snow2" :foreground "white"))))
+ (term-white-face ((t (:foreground "white"))))
+ (term-white-inv-face ((t (:background "snow2"))))
+ (term-white-ul-face ((t (:underline t :background "snow2" :foreground "white"))))
+ (term-whitebg ((t (:background "white"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-yellow-bold-face ((t (:bold t :background "snow2" :foreground "yellow"))))
+ (term-yellow-face ((t (:foreground "yellow"))))
+ (term-yellow-inv-face ((t (:background "yellow"))))
+ (term-yellow-ul-face ((t (:underline t :background "snow2" :foreground "yellow"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (text-cursor ((t (:bold t :background "Red3" :foreground "gray80"))))
+ (toolbar ((t (:bold t :background "Gray80"))))
+ (underline ((t (:underline t :bold t))))
+ (vc-annotate-face-0046FF ((t (nil))))
+ (vcursor ((t (:underline t :background "cyan" :foreground "blue"))))
+ (vertical-divider ((t (:bold t :background "Gray80"))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-generic-/constant-face ((t (nil))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red"))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange"))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-font-lock-type-face ((t (nil))))
+ (vhdl-font-lock-variable-face ((t (nil))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:underline t :foreground "Blue"))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:underline t :foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:underline t :foreground "ForestGreen"))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:underline t :foreground "Brown"))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:underline t :foreground "Grey50"))))
+ (vhdl-speedbar-subprogram-face ((t (nil))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (vm-xface ((t (:background "white" :foreground "black"))))
+ (vmpc-pre-sig-face ((t (:foreground "forestgreen"))))
+ (vmpc-sig-face ((t (:foreground "steelblue"))))
+ (vvb-face ((t (nil))))
+ (w3m-anchor-face ((t (:bold t :foreground "DodgerBlue1"))))
+ (w3m-arrived-anchor-face ((t (:bold t :foreground "DodgerBlue3"))))
+ (w3m-header-line-location-content-face ((t (:background "dark olive green" :foreground "wheat"))))
+ (w3m-header-line-location-title-face ((t (:background "dark olive green" :foreground "beige"))))
+ (white ((t (:foreground "white"))))
+ (widget ((t (nil))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:bold t :foreground "red"))))
+ (widget-documentation-face ((t (:bold t :foreground "dark green"))))
+ (widget-field-face ((t (:bold t :background "gray85"))))
+ (widget-inactive-face ((t (:bold t :foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (woman-bold-face ((t (:bold t))))
+ (woman-italic-face ((t (:foreground "beige"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))
+ (x-face ((t (:bold t :background "white" :foreground "black"))))
+ (x-symbol-adobe-fontspecific-face ((t (nil))))
+ (x-symbol-face ((t (nil))))
+ (x-symbol-heading-face ((t (:bold t))))
+ (x-symbol-info-face ((t (nil))))
+ (x-symbol-invisible-face ((t (nil))))
+ (x-symbol-revealed-face ((t (nil))))
+ (xrdb-option-name-face ((t (:foreground "red"))))
+ (xref-keyword-face ((t (:foreground "blue"))))
+ (xref-list-default-face ((t (nil))))
+ (xref-list-pilot-face ((t (:foreground "navy"))))
+ (xref-list-symbol-face ((t (:foreground "navy"))))
+ (yellow ((t (:bold t :foreground "yellow"))))
+ (zmacs-region ((t (:bold t :background "gray65")))))))
+
+(defun color-theme-mistyday ()
+ "Color theme by K.C. Hari Kumar, created 2001-06-13.
+Black on mistyrose. Includes CUA, calendar, diary, font-latex and
+font-lock. Uses backgrounds on some font-lock faces."
+ (interactive)
+ (color-theme-install
+ '(color-theme-mistyday
+ ((background-color . "mistyrose")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "deep pink")
+ (foreground-color . "Black")
+ (mouse-color . "black"))
+ ((goto-address-mail-face . italic)
+ (goto-address-mail-mouse-face . secondary-selection)
+ (goto-address-url-face . bold)
+ (goto-address-url-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (paren-match-face . paren-face-match)
+ (paren-mismatch-face . paren-face-mismatch)
+ (paren-no-match-face . paren-face-no-match))
+ (default ((t (nil))))
+ (CUA-global-mark-face ((t (:background "cyan" :foreground "black"))))
+ (CUA-rectangle-face ((t (:background "maroon" :foreground "white"))))
+ (CUA-rectangle-noselect-face ((t (:background "dimgray" :foreground "white"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (calendar-today-face ((t (:underline t :background "Spring Green" :foreground "Brown"))))
+ (custom-button-face ((t (:background "dark slate grey" :foreground "azure"))))
+ (custom-documentation-face ((t (:background "white" :foreground "blue"))))
+ (diary-face ((t (:background "navy" :foreground "yellow"))))
+ (font-latex-bold-face ((t (:bold t :foreground "DarkOliveGreen"))))
+ (font-latex-italic-face ((t (:italic t :foreground "DarkOliveGreen"))))
+ (font-latex-math-face ((t (:foreground "navy"))))
+ (font-latex-sedate-face ((t (:foreground "DimGray"))))
+ (font-latex-string-face ((t (nil))))
+ (font-latex-warning-face ((t (nil))))
+ (font-lock-builtin-face ((t (:background "DarkTurquoise" :foreground "Navy"))))
+ (font-lock-comment-face ((t (:italic t :foreground "royal blue"))))
+ (font-lock-constant-face ((t (:background "pale green" :foreground "dark slate blue"))))
+ (font-lock-doc-string-face ((t (:background "medium aquamarine" :foreground "deep pink"))))
+ (font-lock-function-name-face ((t (:background "SpringGreen" :foreground "MidnightBlue"))))
+ (font-lock-keyword-face ((t (:foreground "dark magenta"))))
+ (font-lock-preprocessor-face ((t (:background "pale green" :foreground "dark slate blue"))))
+ (font-lock-reference-face ((t (:background "DarkTurquoise" :foreground "Navy"))))
+ (font-lock-string-face ((t (:background "medium aquamarine" :foreground "deep pink"))))
+ (font-lock-type-face ((t (:background "steel blue" :foreground "khaki"))))
+ (font-lock-variable-name-face ((t (:background "thistle" :foreground "orange red"))))
+ (font-lock-warning-face ((t (:background "LemonChiffon" :foreground "Red"))))
+ (highlight ((t (:background "dark slate grey" :foreground "light cyan"))))
+ (holiday-face ((t (:background "orangered" :foreground "lightyellow"))))
+ (ido-first-match-face ((t (:bold t))))
+ (ido-only-match-face ((t (:foreground "ForestGreen"))))
+ (ido-subdir-face ((t (:foreground "red"))))
+ (italic ((t (:italic t))))
+ (isearch ((t (:background "sienna" :foreground "light cyan"))))
+ (modeline ((t (:background "Royalblue4" :foreground "lawn green"))))
+ (modeline-buffer-id ((t (:background "Royalblue4" :foreground "lawn green"))))
+ (modeline-mousable ((t (:background "Royalblue4" :foreground "lawn green"))))
+ (modeline-mousable-minor-mode ((t (:background "Royalblue4" :foreground "lawn green"))))
+ (paren-face-match ((t (:background "turquoise"))))
+ (paren-face-mismatch ((t (:background "purple" :foreground "white"))))
+ (paren-face-no-match ((t (:background "yellow" :foreground "black"))))
+ (primary-selection ((t (:background "sienna" :foreground "light cyan"))))
+ (region ((t (:background "sienna" :foreground "light cyan"))))
+ (secondary-selection ((t (:background "forest green" :foreground "white smoke"))))
+ (underline ((t (:underline t))))
+ (zmacs-region ((t (:background "sienna" :foreground "light cyan")))))))
+
+(defun color-theme-marine ()
+ "Color theme by Girish Bharadwaj, created 2001-06-22.
+Matches the MS Windows Marine color theme.
+Includes custom, font-lock, paren, widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-marine
+ ((background-color . "#9dcec9")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "yellow")
+ (foreground-color . "darkslategray")
+ (mouse-color . "sienna1"))
+ ((buffers-tab-face . buffers-tab)
+ (gnus-mouse-face . highlight)
+ (smiley-mouse-face . highlight))
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (nil))))
+ (border-glyph ((t (nil))))
+ (buffers-tab ((t (:background "#9dcec9" :foreground "darkslategray"))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "gray85"))))
+ (custom-comment-tag-face ((t (:foreground "blue4"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "deeppink"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "darkgreen"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (font-lock-builtin-face ((t (:foreground "SteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "cadetblue"))))
+ (font-lock-constant-face ((t (:foreground "OrangeRed"))))
+ (font-lock-doc-string-face ((t (:foreground "Salmon"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "NavyBlue"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "purple"))))
+ (font-lock-preprocessor-face ((t (:foreground "SteelBlue"))))
+ (font-lock-reference-face ((t (:foreground "SteelBlue"))))
+ (font-lock-string-face ((t (:foreground "royalblue"))))
+ (font-lock-type-face ((t (:foreground "darkmagenta"))))
+ (font-lock-variable-name-face ((t (:foreground "violetred"))))
+ (font-lock-warning-face ((t (:bold t :foreground "red"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:background "#489088" :foreground "black"))))
+ (highlight ((t (:background "darkolivegreen" :foreground "white"))))
+ (isearch ((t (:background "blue"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (nil))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68" :foreground "darkslategray"))))
+ (modeline ((t (:background "black" :foreground "white"))))
+ (modeline-buffer-id ((t (:background "black" :foreground "white"))))
+ (modeline-mousable ((t (:background "black" :foreground "white"))))
+ (modeline-mousable-minor-mode ((t (:background "black" :foreground "white"))))
+ (paren-blink-off ((t (:foreground "black"))))
+ (paren-match ((t (:background "darkolivegreen" :foreground "white"))))
+ (paren-mismatch ((t (:background "#9dcec9" :foreground "darkslategray"))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "blue"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "blue"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "darkslateblue" :foreground "white"))))
+ (template-message-face ((t (:bold t))))
+ (text-cursor ((t (:background "yellow" :foreground "#9dcec9"))))
+ (toolbar ((t (nil))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (nil))))
+ (widget ((t (nil))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "forestgreen"))))
+ (widget-field-face ((t (:background "gray"))))
+ (widget-inactive-face ((t (:foreground "dimgray"))))
+ (widget-single-line-field-face ((t (:background "dim gray" :foreground "white"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "blue")))))))
+
+(defun color-theme-blue-erc ()
+ "Color theme for erc faces only.
+This is intended for other color themes to use (eg. `color-theme-gnome2')."
+ (color-theme-install
+ '(color-theme-blue-erc
+ nil
+ (erc-action-face ((t (nil))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-current-nick-face ((t (:bold t :foreground "yellow"))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "pale green"))))
+ (erc-error-face ((t (:bold t :foreground "IndianRed"))))
+ (erc-highlight-face ((t (:bold t :foreground "pale green"))))
+ (erc-input-face ((t (:foreground "light blue"))))
+ (erc-inverse-face ((t (:background "steel blue"))))
+ (erc-keyword-face ((t (:foreground "orange" :bold t))))
+ (erc-notice-face ((t (:foreground "light salmon"))))
+ (erc-notice-face ((t (:foreground "MediumAquamarine"))))
+ (erc-pal-face ((t (:foreground "pale green"))))
+ (erc-prompt-face ((t (:foreground "light blue" :bold t))))
+ (fg:erc-color-face0 ((t (:foreground "white"))))
+ (fg:erc-color-face1 ((t (:foreground "beige"))))
+ (fg:erc-color-face2 ((t (:foreground "lemon chiffon"))))
+ (fg:erc-color-face3 ((t (:foreground "light cyan"))))
+ (fg:erc-color-face4 ((t (:foreground "powder blue"))))
+ (fg:erc-color-face5 ((t (:foreground "sky blue"))))
+ (fg:erc-color-face6 ((t (:foreground "dark sea green"))))
+ (fg:erc-color-face7 ((t (:foreground "pale green"))))
+ (fg:erc-color-face8 ((t (:foreground "medium spring green"))))
+ (fg:erc-color-face9 ((t (:foreground "khaki"))))
+ (fg:erc-color-face10 ((t (:foreground "pale goldenrod"))))
+ (fg:erc-color-face11 ((t (:foreground "light goldenrod yellow"))))
+ (fg:erc-color-face12 ((t (:foreground "light yellow"))))
+ (fg:erc-color-face13 ((t (:foreground "yellow"))))
+ (fg:erc-color-face14 ((t (:foreground "light goldenrod"))))
+ (fg:erc-color-face15 ((t (:foreground "lime green"))))
+ (bg:erc-color-face0 ((t (nil))))
+ (bg:erc-color-face1 ((t (nil))))
+ (bg:erc-color-face2 ((t (nil))))
+ (bg:erc-color-face3 ((t (nil))))
+ (bg:erc-color-face4 ((t (nil))))
+ (bg:erc-color-face5 ((t (nil))))
+ (bg:erc-color-face6 ((t (nil))))
+ (bg:erc-color-face7 ((t (nil))))
+ (bg:erc-color-face8 ((t (nil))))
+ (bg:erc-color-face9 ((t (nil))))
+ (bg:erc-color-face10 ((t (nil))))
+ (bg:erc-color-face11 ((t (nil))))
+ (bg:erc-color-face12 ((t (nil))))
+ (bg:erc-color-face13 ((t (nil))))
+ (bg:erc-color-face14 ((t (nil))))
+ (bg:erc-color-face15 ((t (nil)))))))
+
+(defun color-theme-dark-erc ()
+ "Color theme for erc faces only.
+This is intended for other color themes to use (eg. `color-theme-late-night')."
+ (interactive)
+ (color-theme-install
+ '(color-theme-dark-erc
+ nil
+ (erc-action-face ((t (nil))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-current-nick-face ((t (:bold t))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (nil))))
+ (erc-error-face ((t (:bold t :foreground "IndianRed"))))
+ (erc-highlight-face ((t (:bold t :foreground "pale green"))))
+ (erc-input-face ((t (:foreground "#555"))))
+ (erc-inverse-face ((t (:background "steel blue"))))
+ (erc-keyword-face ((t (:foreground "#999" :bold t))))
+ (erc-nick-msg-face ((t (:foreground "#888"))))
+ (erc-notice-face ((t (:foreground "#444"))))
+ (erc-pal-face ((t (:foreground "#888"))))
+ (erc-prompt-face ((t (:foreground "#777" :bold t))))
+ (erc-timestamp-face ((t (:foreground "#777" :bold t))))
+ (fg:erc-color-face0 ((t (:foreground "white"))))
+ (fg:erc-color-face1 ((t (:foreground "beige"))))
+ (fg:erc-color-face2 ((t (:foreground "lemon chiffon"))))
+ (fg:erc-color-face3 ((t (:foreground "light cyan"))))
+ (fg:erc-color-face4 ((t (:foreground "powder blue"))))
+ (fg:erc-color-face5 ((t (:foreground "sky blue"))))
+ (fg:erc-color-face6 ((t (:foreground "dark sea green"))))
+ (fg:erc-color-face7 ((t (:foreground "pale green"))))
+ (fg:erc-color-face8 ((t (:foreground "medium spring green"))))
+ (fg:erc-color-face9 ((t (:foreground "khaki"))))
+ (fg:erc-color-face10 ((t (:foreground "pale goldenrod"))))
+ (fg:erc-color-face11 ((t (:foreground "light goldenrod yellow"))))
+ (fg:erc-color-face12 ((t (:foreground "light yellow"))))
+ (fg:erc-color-face13 ((t (:foreground "yellow"))))
+ (fg:erc-color-face14 ((t (:foreground "light goldenrod"))))
+ (fg:erc-color-face15 ((t (:foreground "lime green"))))
+ (bg:erc-color-face0 ((t (nil))))
+ (bg:erc-color-face1 ((t (nil))))
+ (bg:erc-color-face2 ((t (nil))))
+ (bg:erc-color-face3 ((t (nil))))
+ (bg:erc-color-face4 ((t (nil))))
+ (bg:erc-color-face5 ((t (nil))))
+ (bg:erc-color-face6 ((t (nil))))
+ (bg:erc-color-face7 ((t (nil))))
+ (bg:erc-color-face8 ((t (nil))))
+ (bg:erc-color-face9 ((t (nil))))
+ (bg:erc-color-face10 ((t (nil))))
+ (bg:erc-color-face11 ((t (nil))))
+ (bg:erc-color-face12 ((t (nil))))
+ (bg:erc-color-face13 ((t (nil))))
+ (bg:erc-color-face14 ((t (nil))))
+ (bg:erc-color-face15 ((t (nil)))))))
+
+(defun color-theme-subtle-blue ()
+ "Color theme by Chris McMahan, created 2001-09-06.
+Light blue background. Includes bbdb, comint, cperl, custom, cvs,
+diary, dired, display-time, ecb, ediff, erc, eshell, font-lock,
+gnus, html-helper, info, isearch, jde, message, paren, semantic,
+sgml, speedbar, term, vhdl, viper, vm, widget, woman, xref, xxml."
+ (interactive)
+ (color-theme-install
+ '(color-theme-subtle-blue
+ ((background-color . "#65889C")
+ (background-mode . dark)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "black")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (cursor-color . "white")
+ (foreground-color . "#eedfcc")
+ (mouse-color . "Grey")
+ (top-toolbar-shadow-color . "#fffffbeeffff")
+ (viper-saved-cursor-color-in-replace-mode . "Red3"))
+ ((blank-space-face . blank-space-face)
+ (blank-tab-face . blank-tab-face)
+ (ecb-source-in-directories-buffer-face . ecb-sources-face)
+ (gnus-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight)
+ (vm-highlight-url-face . my-url-face)
+ (vm-highlighted-header-face . my-url-face)
+ (vm-mime-button-face . gui-button-face)
+ (vm-summary-highlight-face . my-summary-highlight-face))
+ (default ((t (nil))))
+ (bbdb-company ((t (:italic t))))
+ (bbdb-field-name ((t (:bold t :foreground "MediumAquamarine"))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (:underline t))))
+ (blank-space-face ((t (:background "gray80"))))
+ (blank-tab-face ((t (:background "LightBlue" :foreground "DarkSlateGray"))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t :foreground "MediumAquamarine"))))
+ (bold-italic ((t (:italic t :bold t :foreground "SkyBlue"))))
+ (border ((t (:background "black"))))
+ (border-glyph ((t (nil))))
+ (calendar-today-face ((t (:underline t))))
+ (comint-highlight-input ((t (:bold t))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (comint-input-face ((t (:foreground "deepskyblue"))))
+ (cperl-array-face ((t (:bold t :foreground "Yellow"))))
+ (cperl-hash-face ((t (:italic t :bold t :foreground "White"))))
+ (cperl-nonoverridable-face ((t (:foreground "SkyBlue"))))
+ (cursor ((t (:background "white"))))
+ (custom-button-face ((t (:underline t :bold t :foreground "MediumAquaMarine"))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black"))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "dim gray"))))
+ (custom-comment-tag-face ((t (:foreground "gray80"))))
+ (custom-documentation-face ((t (:foreground "Grey"))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (custom-group-tag-face-1 ((t (:foreground "MediumAquaMarine"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "yellow"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:bold t :foreground "Aquamarine"))))
+ (cvs-filename-face ((t (:foreground "blue4"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:bold t :foreground "blue4"))))
+ (cvs-marked-face ((t (:bold t :foreground "green3"))))
+ (cvs-msg-face ((t (:italic t))))
+ (cvs-need-action-face ((t (:foreground "orange"))))
+ (cvs-unknown-face ((t (:foreground "red"))))
+ (diary-face ((t (:bold t :foreground "cyan"))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t :foreground "sky blue"))))
+ (dired-face-executable ((t (:foreground "MediumAquaMarine"))))
+ (dired-face-flagged ((t (:foreground "Cyan"))))
+ (dired-face-marked ((t (:foreground "cyan"))))
+ (dired-face-permissions ((t (:foreground "aquamarine"))))
+ (dired-face-setuid ((t (:foreground "LightSalmon"))))
+ (dired-face-socket ((t (:foreground "LightBlue"))))
+ (dired-face-symlink ((t (:foreground "gray95"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (ecb-sources-face ((t (:foreground "LightBlue1"))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "indianred" :foreground "white"))))
+ (ediff-even-diff-face-A ((t (:background "light gray" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Gray" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Gray" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light gray" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Gray" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light gray" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light gray" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Gray" :foreground "White"))))
+ (erc-action-face ((t (:bold t))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "LightSalmon"))))
+ (erc-error-face ((t (:bold t :foreground "yellow"))))
+ (erc-input-face ((t (:foreground "Beige"))))
+ (erc-inverse-face ((t (:background "wheat" :foreground "darkslategrey"))))
+ (erc-notice-face ((t (:foreground "MediumAquamarine"))))
+ (erc-pal-face ((t (:foreground "PaleGreen"))))
+ (erc-prompt-face ((t (:foreground "MediumAquamarine"))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "wheat"))))
+ (eshell-ls-backup-face ((t (:foreground "Grey"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "wheat"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Yellow"))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "wheat"))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "wheat"))))
+ (eshell-ls-picture-face ((t (:foreground "wheat"))))
+ (eshell-ls-product-face ((t (:foreground "wheat"))))
+ (eshell-ls-readonly-face ((t (:foreground "wheat"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "wheat"))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "White"))))
+ (eshell-ls-text-face ((t (:foreground "wheat"))))
+ (eshell-ls-todo-face ((t (:foreground "wheat"))))
+ (eshell-ls-unreadable-face ((t (:foreground "wheat3"))))
+ (eshell-prompt-face ((t (:bold t :foreground "PaleGreen"))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green"))))
+ (excerpt ((t (:italic t))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "NavyBlue"))))
+ (flyspell-duplicate-face ((t (:underline t :bold t :foreground "Gold3"))))
+ (flyspell-incorrect-face ((t (:underline t :bold t :foreground "OrangeRed"))))
+ (font-latex-italic-face ((t (nil))))
+ (font-latex-math-face ((t (nil))))
+ (font-latex-sedate-face ((t (:foreground "Gray85"))))
+ (font-latex-string-face ((t (:foreground "orange"))))
+ (font-latex-warning-face ((t (:foreground "gold"))))
+ (font-lock-builtin-face ((t (:foreground "PaleGreen"))))
+ (font-lock-comment-face ((t (:italic t :foreground "Wheat3"))))
+ (font-lock-constant-face ((t (:foreground "LightBlue"))))
+ (font-lock-doc-face ((t (:bold t :foreground "DarkSeaGreen"))))
+ (font-lock-doc-string-face ((t (:bold t :foreground "DarkSeaGreen"))))
+ (font-lock-exit-face ((t (:foreground "green"))))
+ (font-lock-function-name-face ((t (:italic t :bold t :foreground "cyan"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "LightBlue"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "PaleGreen"))))
+ (font-lock-string-face ((t (:italic t :foreground "MediumAquamarine"))))
+ (font-lock-type-face ((t (:bold t :foreground "LightBlue"))))
+ (font-lock-variable-name-face ((t (:italic t :bold t :foreground "LightBlue"))))
+ (font-lock-warning-face ((t (:bold t :foreground "LightSalmon"))))
+ (fringe ((t (:background "darkslategrey"))))
+ (gnus-cite-attribution-face ((t (:italic t :bold t))))
+ (gnus-cite-face-1 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-11 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-2 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-3 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-4 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-5 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-6 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-7 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-8 ((t (:foreground "LightBlue"))))
+ (gnus-cite-face-9 ((t (:foreground "LightBlue"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-filterhist-face-1 ((t (nil))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "light cyan"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "turquoise"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "LightBlue"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "LightBlue"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "green yellow"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "Aquamarine"))))
+ (gnus-group-news-3-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "LightBlue"))))
+ (gnus-group-news-4-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-news-4-face ((t (:bold t :foreground "Wheat"))))
+ (gnus-group-news-5-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-news-5-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (gnus-group-news-6-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-news-6-face ((t (:bold t :foreground "MediumAquamarine"))))
+ (gnus-group-news-low-empty-face ((t (:foreground "gray80"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "yellow green"))))
+ (gnus-header-content-face ((t (:italic t :foreground "LightSkyBlue3"))))
+ (gnus-header-from-face ((t (:bold t :foreground "light cyan"))))
+ (gnus-header-name-face ((t (:bold t :foreground "LightBlue"))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "LightSkyBlue3"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "light cyan"))))
+ (gnus-picons-face ((t (:background "white" :foreground "black"))))
+ (gnus-picons-xbm-face ((t (:background "white" :foreground "black"))))
+ (gnus-signature-face ((t (:italic t :foreground "LightBlue"))))
+ (gnus-splash ((t (:foreground "Brown"))))
+ (gnus-splash-face ((t (:foreground "LightBlue"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "gray80"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "LightBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "gray80"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "burlywood"))))
+ (gnus-summary-high-unread-face ((t (:italic t :bold t :foreground "wheat"))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "LightBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "light sea green"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :bold t :foreground "LightBlue"))))
+ (gnus-summary-low-unread-face ((t (:italic t :foreground "light sea green"))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "gray80"))))
+ (gnus-summary-normal-read-face ((t (:foreground "gray80"))))
+ (gnus-summary-normal-ticked-face ((t (:bold t :foreground "sandy brown"))))
+ (gnus-summary-normal-unread-face ((t (:bold t :foreground "wheat"))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-x-face ((t (:background "white" :foreground "black"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "cyan" :foreground "#65889C"))))
+ (gui-element ((t (:background "Gray"))))
+ (header-line ((t (:background "grey20" :foreground "grey90"))))
+ (highlight ((t (:background "PaleGreen" :foreground "DarkGreen"))))
+ (highlight-changes-delete-face ((t (:underline t :foreground "red"))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highline-face ((t (:background "SeaGreen"))))
+ (holiday-face ((t (:background "DimGray"))))
+ (html-helper-bold-face ((t (:foreground "DarkRed"))))
+ (html-helper-italic-face ((t (:foreground "DarkBlue"))))
+ (html-helper-underline-face ((t (:underline t :foreground "Black"))))
+ (html-tag-face ((t (:foreground "Blue"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:underline t :italic t :bold t :foreground "light blue"))))
+ (info-xref ((t (:bold t :foreground "light blue"))))
+ (isearch ((t (:background "Aquamarine" :foreground "SteelBlue"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (:italic t))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-bug-breakpoint-marker ((t (:background "yellow" :foreground "red"))))
+ (jde-java-font-lock-api-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-bold-face ((t (:bold t))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-italic-face ((t (:italic t))))
+ (jde-java-font-lock-link-face ((t (:underline t :foreground "LightBlue"))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-package-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (lazy-highlight-face ((t (:bold t :foreground "dark magenta"))))
+ (left-margin ((t (nil))))
+ (linemenu-face ((t (:background "gray30"))))
+ (list-mode-item-selected ((t (nil))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (menu ((t (:background "wheat" :foreground "gray30"))))
+ (message-cited-text-face ((t (:foreground "White"))))
+ (message-header-cc-face ((t (:bold t :foreground "light cyan"))))
+ (message-header-name-face ((t (:foreground "LightBlue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "LightSkyBlue3"))))
+ (message-header-other-face ((t (:foreground "LightSkyBlue3"))))
+ (message-header-subject-face ((t (:bold t :foreground "light cyan"))))
+ (message-header-to-face ((t (:bold t :foreground "light cyan"))))
+ (message-header-xheader-face ((t (:foreground "LightBlue"))))
+ (message-mml-face ((t (:bold t :foreground "LightBlue"))))
+ (message-separator-face ((t (:foreground "LightBlue"))))
+ (mmm-default-submode-face ((t (:background "#c0c0c5"))))
+ (modeline ((t (:background "#4f657d" :foreground "gray80"))))
+ (modeline-buffer-id ((t (:background "#4f657d" :foreground "gray80"))))
+ (modeline-mousable ((t (:background "#4f657d" :foreground "gray80"))))
+ (modeline-mousable-minor-mode ((t (:background "#4f657d" :foreground "gray80"))))
+ (mouse ((t (:background "Grey"))))
+ (my-summary-highlight-face ((t (:foreground "White"))))
+ (my-url-face ((t (:foreground "PaleTurquoise"))))
+ (nil ((t (nil))))
+ (paren-blink-off ((t (:foreground "gray"))))
+ (paren-face-match ((t (:background "turquoise"))))
+ (paren-face-mismatch ((t (:background "purple" :foreground "white"))))
+ (paren-face-no-match ((t (:background "yellow" :foreground "black"))))
+ (paren-match ((t (:background "darkseagreen2"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "black"))))
+ (paren-mismatch-face ((t (:bold t))))
+ (paren-no-match-face ((t (:bold t))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "CadetBlue" :foreground "gray80"))))
+ (right-margin ((t (nil))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "LightBlue" :foreground "#4f657d"))))
+ (semantic-dirty-token-face ((t (:background "gray10"))))
+ (semantic-intangible-face ((t (:foreground "gray25"))))
+ (semantic-read-only-face ((t (:background "gray25"))))
+ (senator-intangible-face ((t (:foreground "gray75"))))
+ (senator-momentary-highlight-face ((t (:background "gray80"))))
+ (senator-read-only-face ((t (:background "#664444"))))
+ (sgml-comment-face ((t (:foreground "dark turquoise"))))
+ (sgml-doctype-face ((t (:foreground "red"))))
+ (sgml-end-tag-face ((t (:foreground "blue"))))
+ (sgml-entity-face ((t (:foreground "magenta"))))
+ (sgml-ignored-face ((t (:background "gray60" :foreground "gray40"))))
+ (sgml-ms-end-face ((t (:foreground "green"))))
+ (sgml-ms-start-face ((t (:foreground "yellow"))))
+ (sgml-pi-face ((t (:foreground "lime green"))))
+ (sgml-sgml-face ((t (:foreground "brown"))))
+ (sgml-short-ref-face ((t (:foreground "deep sky blue"))))
+ (sgml-start-tag-face ((t (:foreground "dark green"))))
+ (shell-option-face ((t (:foreground "blue"))))
+ (shell-output-2-face ((t (:foreground "darkseagreen"))))
+ (shell-output-3-face ((t (:foreground "slategray"))))
+ (shell-output-face ((t (:foreground "palegreen"))))
+ (shell-prompt-face ((t (:foreground "red"))))
+ (show-paren-match-face ((t (:background "Aquamarine" :foreground "steel blue"))))
+ (show-paren-mismatch-face ((t (:bold t :background "IndianRed" :foreground "White"))))
+ (speedbar-button-face ((t (:bold t :foreground "LightBlue"))))
+ (speedbar-directory-face ((t (:bold t :foreground "yellow"))))
+ (speedbar-file-face ((t (:bold t :foreground "wheat"))))
+ (speedbar-highlight-face ((t (:background "sea green"))))
+ (speedbar-selected-face ((t (:underline t))))
+ (speedbar-tag-face ((t (:foreground "LightBlue"))))
+ (swbuff-current-buffer-face ((t (:bold t :foreground "red"))))
+ (template-message-face ((t (:bold t))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-bold ((t (:bold t))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-green ((t (:foreground "green"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-red ((t (:foreground "red"))))
+ (term-redbg ((t (:background "red"))))
+ (term-underline ((t (:underline t))))
+ (term-white ((t (:foreground "white"))))
+ (term-whitebg ((t (:background "white"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (text-cursor ((t (:background "Red3" :foreground "white"))))
+ (tool-bar ((t (:background "grey75" :foreground "black"))))
+ (toolbar ((t (:background "Gray"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (nil))))
+ (vc-annotate-face-0046FF ((t (:background "black" :foreground "wheat"))))
+ (vcursor ((t (:underline t :background "cyan" :foreground "blue"))))
+ (vertical-divider ((t (:background "Gray"))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red"))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange"))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:underline t :foreground "Blue"))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:underline t :foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:underline t :foreground "ForestGreen"))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:underline t :foreground "Brown"))))
+ (vhdl-speedbar-package-face ((t (:foreground "Gray50"))))
+ (vhdl-speedbar-package-selected-face ((t (:underline t :foreground "Gray50"))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "gray" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (vm-header-content-face ((t (:italic t :foreground "gray80"))))
+ (vm-header-from-face ((t (:italic t :background "#65889C" :foreground "cyan"))))
+ (vm-header-name-face ((t (:foreground "cyan"))))
+ (vm-header-subject-face ((t (:foreground "cyan"))))
+ (vm-header-to-face ((t (:italic t :foreground "cyan"))))
+ (vm-message-cited-face ((t (:foreground "Gray80"))))
+ (vm-summary-face-1 ((t (:foreground "MediumAquamarine"))))
+ (vm-summary-face-2 ((t (:foreground "MediumAquamarine"))))
+ (vm-summary-face-3 ((t (:foreground "MediumAquamarine"))))
+ (vm-summary-face-4 ((t (:foreground "MediumAquamarine"))))
+ (vm-summary-highlight-face ((t (:foreground "White"))))
+ (vmpc-pre-sig-face ((t (:foreground "Aquamarine"))))
+ (vmpc-sig-face ((t (:foreground "LightBlue"))))
+ (vvb-face ((t (:background "pink" :foreground "black"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "cyan"))))
+ (widget-documentation-face ((t (:foreground "LightBlue"))))
+ (widget-field-face ((t (:foreground "LightBlue"))))
+ (widget-inactive-face ((t (:foreground "Wheat3"))))
+ (widget-single-line-field-face ((t (:foreground "LightBlue"))))
+ (woman-bold-face ((t (:bold t))))
+ (woman-italic-face ((t (:foreground "beige"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))
+ (xref-keyword-face ((t (:foreground "Cyan"))))
+ (xref-list-pilot-face ((t (:foreground "navy"))))
+ (xref-list-symbol-face ((t (:foreground "navy"))))
+ (xxml-emph-1-face ((t (:background "lightyellow"))))
+ (xxml-emph-2-face ((t (:background "lightyellow"))))
+ (xxml-header-1-face ((t (:background "seashell1" :foreground "MediumAquamarine"))))
+ (xxml-header-2-face ((t (:background "seashell1" :foreground "SkyBlue"))))
+ (xxml-header-3-face ((t (:background "seashell1"))))
+ (xxml-header-4-face ((t (:background "seashell1"))))
+ (xxml-interaction-face ((t (:background "lightcyan"))))
+ (xxml-rug-face ((t (:background "cyan"))))
+ (xxml-sparkle-face ((t (:background "yellow"))))
+ (xxml-unbreakable-space-face ((t (:underline t :foreground "grey"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "#4f657d")))))))
+
+(defun color-theme-dark-blue ()
+ "Color theme by Chris McMahan, created 2001-09-09.
+Based on `color-theme-subtle-blue' with a slightly darker background."
+ (interactive)
+ (color-theme-subtle-blue)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-install
+ '(color-theme-dark-blue
+ ((background-color . "#537182")
+ (foreground-color . "AntiqueWhite2"))
+ nil
+ (default ((t (nil))))
+ (blank-space-face ((t (:background "LightGray"))))
+ (blank-tab-face ((t (:background "Wheat" :foreground "DarkSlateGray"))))
+ (cursor ((t (:background "LightGray"))))
+ (dired-face-executable ((t (:foreground "green yellow"))))
+ (dired-face-flagged ((t (:foreground "tomato"))))
+ (dired-face-marked ((t (:foreground "light salmon"))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (fixed ((t (:bold t))))
+ (font-lock-comment-face ((t (:italic t :foreground "Gray80"))))
+ (font-lock-doc-face ((t (:bold t))))
+ (font-lock-function-name-face ((t (:italic t :bold t :foreground "Yellow"))))
+ (font-lock-string-face ((t (:italic t :foreground "DarkSeaGreen"))))
+ (font-lock-type-face ((t (:bold t :foreground "YellowGreen"))))
+ (gui-button-face ((t (:background "DarkSalmon" :foreground "white"))))
+ (modeline ((t (:background "#c1ccd9" :foreground "#4f657d"))))
+ (modeline-buffer-id ((t (:background "#c1ccd9" :foreground "#4f657d"))))
+ (modeline-mousable ((t (:background "#c1ccd9" :foreground "#4f657d"))))
+ (modeline-mousable-minor-mode ((t (:background "#c1ccd9" :foreground "#4f657d"))))
+ (my-url-face ((t (:foreground "LightBlue"))))
+ (region ((t (:background "PaleTurquoise4" :foreground "gray80"))))
+ (secondary-selection ((t (:background "sea green" :foreground "yellow"))))
+ (vm-header-content-face ((t (:italic t :foreground "wheat"))))
+ (vm-header-from-face ((t (:italic t :foreground "wheat"))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (xref-keyword-face ((t (:foreground "blue"))))
+ (zmacs-region ((t (:background "SlateGray"))))))))
+
+(defun color-theme-jonadabian-slate ()
+ "Another slate-and-wheat color theme by Jonadab the Unsightly One.
+Updated 2001-10-12."
+ (interactive)
+ (color-theme-install
+ '(color-theme-jonadabian-slate
+ ((background-color . "#305050")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "medium turquoise")
+ (foreground-color . "#CCBB77")
+ (mouse-color . "black"))
+ ((list-matching-lines-face . bold)
+ (ued-mode-keyname-face . modeline)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (fringe ((t (:background "#007080"))))
+ (bold ((t (:bold t :foreground "#EEDDAA"))))
+ (gnus-emphasis-bold ((t (:bold t :foreground "#EEDDAA"))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t :foreground "#EEDDAA"))))
+ (bold-italic ((t (:italic t :bold t :foreground "#AA0000"))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :foreground "#AA0000"))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t :foreground "#AA0000"))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t :bold t :foreground "#AA0000"))))
+ (calendar-today-face ((t (:underline t :background "darkslategrey"))))
+ (cperl-array-face ((t (:background "#004060"))))
+ (cperl-hash-face ((t (:background "#004400"))))
+ (custom-button-face ((t (:background "dark blue" :foreground "rgbi:1.00/1.00/0.00"))))
+ (custom-documentation-face ((t (:foreground "#10D010"))))
+ (custom-face-tag-face ((t (:underline t :foreground "goldenrod"))))
+ (custom-group-tag-face ((t (:underline t :foreground "light blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "pink"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:foreground "#6666dd"))))
+ (custom-state-face ((t (:foreground "mediumaquamarine"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "light blue"))))
+ (diary-face ((t (:foreground "red"))))
+ (eshell-ls-archive-face ((t (:foreground "green"))))
+ (eshell-ls-backup-face ((t (:foreground "grey60"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "SkyBlue"))))
+ (eshell-ls-executable-face ((t (:foreground "white"))))
+ (eshell-ls-missing-face ((t (:foreground "red"))))
+ (eshell-ls-product-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-readonly-face ((t (:foreground "indian red"))))
+ (eshell-ls-special-face ((t (:foreground "yellow"))))
+ (eshell-ls-symlink-face ((t (:foreground "#6666dd"))))
+ (eshell-ls-unreadable-face ((t (:foreground "red"))))
+ (eshell-prompt-face ((t (:bold t :background "#305050" :foreground "#EEDD99"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:italic t :bold t :foreground "grey66"))))
+ (font-lock-constant-face ((t (:foreground "indian red"))))
+ (font-lock-function-name-face ((t (:foreground "#D0D000"))))
+ (font-lock-keyword-face ((t (:foreground "#00BBBB"))))
+ (font-lock-string-face ((t (:foreground "#10D010"))))
+ (font-lock-type-face ((t (:bold t :foreground "#ff7788"))))
+ (font-lock-variable-name-face ((t (:foreground "#eeddaa"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (header-line ((t (:box (:line-width 1 :style released-button)))))
+ (highlight ((t (:background "#226644"))))
+ (highlight-changes-delete-face ((t (:background "navy" :foreground "red"))))
+ (highlight-changes-face ((t (:background "navy"))))
+ (holiday-face ((t (:foreground "#ff7744"))))
+ (italic ((t (:italic t :foreground "#AA0000"))))
+ (gnus-emphasis-italic ((t (:italic t :foreground "#AA0000"))))
+ (modeline ((t (:background "#007080" :foreground "cyan"))))
+ (modeline-buffer-id ((t (:background "#007080" :foreground "cyan"))))
+ (modeline-mousable ((t (:background "#007080" :foreground "cyan"))))
+ (modeline-mousable-minor-mode ((t (:background "#007080" :foreground "cyan"))))
+ (region ((t (:background "#226644"))))
+ (secondary-selection ((t (:background "darkslategrey"))))
+ (sgml-comment-face ((t (:foreground "grey60"))))
+ (sgml-doctype-face ((t (:foreground "red"))))
+ (sgml-end-tag-face ((t (:foreground "#00D0D0"))))
+ (sgml-entity-face ((t (:foreground "indian red"))))
+ (sgml-ignored-face ((t (:background "gray60" :foreground "gray40"))))
+ (sgml-ms-end-face ((t (:foreground "green"))))
+ (sgml-ms-start-face ((t (:foreground "green"))))
+ (sgml-pi-face ((t (:foreground "lime green"))))
+ (sgml-sgml-face ((t (:foreground "brown"))))
+ (sgml-short-ref-face ((t (:foreground "deep sky blue"))))
+ (sgml-start-tag-face ((t (:foreground "#D0D000"))))
+ (show-paren-match-face ((t (:background "#400055" :foreground "cyan"))))
+ (show-paren-mismatch-face ((t (:background "red"))))
+ (special-string-face ((t (:foreground "light green"))))
+ (term-black ((t (:background "#000055" :foreground "black"))))
+ (term-blackbg ((t (:background "black" :foreground "#CCBB77"))))
+ (term-blue ((t (:background "#000055" :foreground "blue"))))
+ (term-bluebg ((t (:background "blue" :foreground "#CCBB77"))))
+ (term-bold ((t (:bold t :background "#000055" :foreground "#CCBB77"))))
+ (term-cyan ((t (:background "#000055" :foreground "cyan"))))
+ (term-cyanbg ((t (:background "darkcyan"))))
+ (term-default-bg ((t (:foreground "#CCBB77"))))
+ (term-default-bg-inv ((t (:foreground "#CCBB77"))))
+ (term-default-fg ((t (:background "#000055"))))
+ (term-default-fg-inv ((t (:background "#000055"))))
+ (term-green ((t (:background "#000055" :foreground "green"))))
+ (term-greenbg ((t (:background "darkgreen"))))
+ (term-invisible ((t (:foreground "#CCBB77"))))
+ (term-invisible-inv ((t (:foreground "#CCBB77"))))
+ (term-magenta ((t (:background "#000055" :foreground "magenta"))))
+ (term-magentabg ((t (:background "darkmagenta"))))
+ (term-red ((t (:background "#000055" :foreground "red"))))
+ (term-redbg ((t (:background "darkred"))))
+ (term-underline ((t (:underline t :background "#000055" :foreground "#CCBB77"))))
+ (term-white ((t (:background "#000055" :foreground "white"))))
+ (term-whitebg ((t (:background "grey50"))))
+ (term-yellow ((t (:background "#000055" :foreground "yellow"))))
+ (term-yellowbg ((t (:background "#997700"))))
+ (trailing-whitespace ((t (:background "#23415A"))))
+ (underline ((t (:underline t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "green"))))
+ (widget-field-face ((t (:background "grey35" :foreground "black"))))
+ (widget-inactive-face ((t (:foreground "gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray")))))))
+
+(defun color-theme-gray1 ()
+ "Color theme by Paul Pulli, created 2001-10-19."
+ (interactive)
+ (color-theme-install
+ '(color-theme-gray1
+ ((background-color . "darkgray")
+ (background-mode . light)
+ (background-toolbar-color . "#949494949494")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#595959595959")
+ (cursor-color . "Yellow")
+ (foreground-color . "black")
+ (top-toolbar-shadow-color . "#b2b2b2b2b2b2"))
+ nil
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (nil))))
+ (cperl-here-face ((t (:background "gray68" :foreground "DeepPink"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "red3"))))
+ (font-lock-comment-face ((t (:foreground "gray50"))))
+ (font-lock-constant-face ((t (:bold t :foreground "blue3"))))
+ (font-lock-doc-string-face ((t (:foreground "black"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "DeepPink3"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "red"))))
+ (font-lock-other-type-face ((t (:bold t :foreground "green4"))))
+ (font-lock-preprocessor-face ((t (:bold t :foreground "blue3"))))
+ (font-lock-reference-face ((t (:bold t :foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "red"))))
+ (font-lock-type-face ((t (:bold t :foreground "white"))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "blue3"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (green ((t (:foreground "green4"))))
+ (gui-button-face ((t (:background "black" :foreground "red"))))
+ (gui-element ((t (:background "gray58"))))
+ (highlight ((t (:background "magenta" :foreground "yellow"))))
+ (isearch ((t (:background "red" :foreground "yellow"))))
+ (italic ((t (:italic t))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray90" :foreground "purple"))))
+ (m4-face ((t (:background "gray90" :foreground "orange3"))))
+ (message-cited-text ((t (nil))))
+ (message-header-contents ((t (nil))))
+ (message-headers ((t (nil))))
+ (message-highlighted-header-contents ((t (nil))))
+ (modeline ((t (:background "#aa80aa" :foreground "White"))))
+ (modeline-buffer-id ((t (:background "#aa80aa" :foreground "linen"))))
+ (modeline-mousable ((t (:background "#aa80aa" :foreground "cyan"))))
+ (modeline-mousable-minor-mode ((t (:background "#aa80aa" :foreground "yellow"))))
+ (paren-blink-off ((t (:foreground "gray58"))))
+ (paren-blink-on ((t (:foreground "purple"))))
+ (paren-match ((t (:background "gray68" :foreground "white"))))
+ (paren-mismatch ((t (:background "DeepPink" :foreground "black"))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray"))))
+ (red ((t (:foreground "red"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (text-cursor ((t (:background "Yellow" :foreground "darkgray"))))
+ (toolbar ((t (:background "#aa80aa" :foreground "linen"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (nil))))
+ (x-face ((t (:background "black" :foreground "lavenderblush"))))
+ (yellow ((t (:foreground "yellow3"))))
+ (zmacs-region ((t (:background "paleturquoise" :foreground "black")))))))
+
+(defun color-theme-word-perfect ()
+ "White on blue background, based on WordPerfect 5.1.
+Color theme by Thomas Gehrlein, created 2001-10-21."
+ (interactive)
+ (color-theme-install
+ '(color-theme-word-perfect
+ ((background-color . "blue4")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "gold")
+ (foreground-color . "white")
+ (mouse-color . "black"))
+ ((ecb-source-in-directories-buffer-face . ecb-sources-face)
+ (gnus-mouse-face . highlight)
+ (goto-address-mail-face . italic)
+ (goto-address-mail-mouse-face . secondary-selection)
+ (goto-address-url-face . bold)
+ (goto-address-url-mouse-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bbdb-field-name ((t (:foreground "lime green"))))
+ (bbdb-field-value ((t (:foreground "white"))))
+ (bbdb-name ((t (:underline t :foreground "lime green"))))
+ (bold ((t (:bold t :foreground "white"))))
+ (bold-italic ((t (:italic t :bold t :foreground "yellow"))))
+ (calendar-today-face ((t (:underline t :foreground "deep sky blue"))))
+ (diary-face ((t (:foreground "gold"))))
+ (ecb-sources-face ((t (:foreground "LightBlue1"))))
+ (edb-inter-field-face ((t (:foreground "deep sky blue"))))
+ (edb-normal-summary-face ((t (:foreground "gold"))))
+ (emacs-wiki-bad-link-face ((t (:underline "coral" :bold t :foreground "coral"))))
+ (emacs-wiki-link-face ((t (:underline "cyan" :bold t :foreground "cyan"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "deep sky blue"))))
+ (font-lock-constant-face ((t (:foreground "lime green"))))
+ (font-lock-doc-face ((t (:foreground "gold"))))
+ (font-lock-doc-string-face ((t (:foreground "gold"))))
+ (font-lock-function-name-face ((t (:background "blue4" :foreground "IndianRed"))))
+ (font-lock-keyword-face ((t (:foreground "lime green"))))
+ (font-lock-preprocessor-face ((t (:foreground "lime green"))))
+ (font-lock-reference-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-string-face ((t (:foreground "gold"))))
+ (font-lock-type-face ((t (:foreground "lime green"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-emphasis-bold ((t (:foreground "yellow2"))))
+ (gnus-emphasis-bold-italic ((t (:foreground "yellow2"))))
+ (gnus-emphasis-italic ((t (:foreground "yellow2"))))
+ (gnus-emphasis-underline ((t (:foreground "yellow2"))))
+ (gnus-emphasis-underline-bold ((t (:foreground "yellow2"))))
+ (gnus-emphasis-underline-bold-italic ((t (:foreground "yellow2"))))
+ (gnus-emphasis-underline-italic ((t (:foreground "yellow2"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "aquamarine3"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise"))))
+ (gnus-group-news-3-empty-face ((t (:foreground "deep sky blue"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "deep sky blue"))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise"))))
+ (gnus-header-content-face ((t (:foreground "gold"))))
+ (gnus-header-from-face ((t (:foreground "gold"))))
+ (gnus-header-name-face ((t (:foreground "deep sky blue"))))
+ (gnus-header-newsgroups-face ((t (:foreground "gold"))))
+ (gnus-header-subject-face ((t (:foreground "gold"))))
+ (gnus-signature-face ((t (:foreground "gold"))))
+ (gnus-splash-face ((t (:foreground "firebrick"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "deep sky blue"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "deep sky blue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "deep sky blue"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "deep sky blue"))))
+ (gnus-summary-high-unread-face ((t (:bold t :foreground "lime green"))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "deep sky blue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "deep sky blue"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "deep sky blue"))))
+ (gnus-summary-low-unread-face ((t (:italic t :foreground "lime green"))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "deep sky blue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "deep sky blue"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "deep sky blue"))))
+ (gnus-summary-normal-unread-face ((t (:foreground "lime green"))))
+ (gnus-summary-selected-face ((t (:underline t :foreground "gold"))))
+ (highlight ((t (:background "steel blue" :foreground "black"))))
+ (holiday-face ((t (:background "blue4" :foreground "IndianRed1"))))
+ (info-menu-5 ((t (:underline t :foreground "gold"))))
+ (info-node ((t (:italic t :bold t :foreground "gold"))))
+ (info-xref ((t (:bold t :foreground "gold"))))
+ (isearch ((t (:background "firebrick" :foreground "white"))))
+ (italic ((t (:italic t :foreground "yellow2"))))
+ (message-cited-text-face ((t (:foreground "gold"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4"))))
+ (message-header-name-face ((t (:foreground "deep sky blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "gold"))))
+ (message-header-other-face ((t (:foreground "gold"))))
+ (message-header-subject-face ((t (:foreground "gold"))))
+ (message-header-to-face ((t (:bold t :foreground "gold"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-separator-face ((t (:foreground "lime green"))))
+ (modeline ((t (:foreground "white" :background "black"))))
+ (modeline-buffer-id ((t (:foreground "white" :background "black"))))
+ (modeline-mousable ((t (:foreground "white" :background "black"))))
+ (modeline-mousable-minor-mode ((t (:foreground "white" :background "black"))))
+ (overlay-empty-face ((t (nil))))
+ (primary-selection ((t (:background "firebrick" :foreground "white"))))
+ (region ((t (:background "firebrick" :foreground "white"))))
+ (secondary-selection ((t (:background "yellow2" :foreground "black"))))
+ (semantic-dirty-token-face ((t (:background "gray10"))))
+ (show-paren-match-face ((t (:background "deep sky blue" :foreground "black"))))
+ (show-paren-mismatch-face ((t (:background "firebrick" :foreground "white"))))
+ (underline ((t (:underline t :background "blue4" :foreground "white")))))))
+
+;; In order to produce this, follow these steps:
+;;
+;; 0. Make sure .Xresources and .Xdefaults don't have any Emacs related
+;; entries.
+;;
+;; 1. cd into the Emacs lisp directory and run the following command:
+;; ( for d in `find -type d`; \
+;; do grep --files-with-matches 'defface[ ]' $d/*.el; \
+;; done ) | sort | uniq
+;; Put the result in a lisp block, using load-library calls.
+;;
+;; Repeat this for any directories on your load path which you want to
+;; include in the standard. This might include W3, eshell, etc.
+;;
+;; Add some of the libraries that don't use defface:
+;;
+;; 2. Start emacs using the --no-init-file and --no-site-file command line
+;; arguments. Evaluate the lisp block you prepared.
+;; 3. Load color-theme and run color-theme-print. Save the output and use it
+;; to define color-theme-standard.
+;;
+;; (progn
+;; (load-library "add-log")
+;; (load-library "calendar")
+;; (load-library "comint")
+;; (load-library "cus-edit")
+;; (load-library "cus-face")
+;; (load-library "custom")
+;; (load-library "diff-mode")
+;; (load-library "ediff-init")
+;; (load-library "re-builder")
+;; (load-library "viper-init")
+;; (load-library "enriched")
+;; (load-library "em-ls")
+;; (load-library "em-prompt")
+;; (load-library "esh-test")
+;; (load-library "faces")
+;; (load-library "font-lock")
+;; (load-library "generic-x")
+;; (load-library "gnus-art")
+;; (load-library "gnus-cite")
+;; (load-library "gnus")
+;; (load-library "message")
+;; (load-library "hilit-chg")
+;; (load-library "hi-lock")
+;; (load-library "info")
+;; (load-library "isearch")
+;; (load-library "log-view")
+;; (load-library "paren")
+;; (load-library "pcvs-info")
+;; (load-library "antlr-mode")
+;; (load-library "cperl-mode")
+;; (load-library "ebrowse")
+;; (load-library "idlwave")
+;; (load-library "idlw-shell")
+;; (load-library "make-mode")
+;; (load-library "sh-script")
+;; (load-library "vhdl-mode")
+;; (load-library "smerge-mode")
+;; (load-library "speedbar")
+;; (load-library "strokes")
+;; (load-library "artist")
+;; (load-library "flyspell")
+;; (load-library "texinfo")
+;; (load-library "tex-mode")
+;; (load-library "tooltip")
+;; (load-library "vcursor")
+;; (load-library "wid-edit")
+;; (load-library "woman")
+;; (load-library "term")
+;; (load-library "man")
+;; (load-file "/home/alex/elisp/color-theme.el")
+;; (color-theme-print))
+;;
+;; 4. Make the color theme usable on Xemacs (add more faces, resolve
+;; :inherit attributes)
+;;
+(defun color-theme-emacs-21 ()
+ "Color theme used by Emacs 21.1.
+Added and adapted for XEmacs by Alex Schroeder. Adaptation mostly
+consisted of resolving :inherit attributes and adding missing faces.
+This theme includes faces from the following Emacs libraries: add-log
+calendar comint cus-edit cus-face custom diff-mode ediff-init re-builder
+viper-init enriched em-ls em-prompt esh-test faces font-lock generic-x
+gnus-art gnus-cite gnus message hilit-chg hi-lock info isearch log-view
+paren pcvs-info antlr-mode cperl-mode ebrowse idlwave idlw-shell
+make-mode sh-script vhdl-mode smerge-mode speedbar strokes artist
+flyspell texinfo tex-mode tooltip vcursor wid-edit woman term man"
+ (interactive)
+ (color-theme-install
+ '(color-theme-emacs-21
+ ((background-color . "white")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "black")
+ (mouse-color . "black"))
+ ((Man-overstrike-face . bold)
+ (Man-underline-face . underline)
+ (cperl-here-face . font-lock-string-face)
+ (cperl-invalid-face . underline)
+ (cperl-pod-face . font-lock-comment-face)
+ (cperl-pod-head-face . font-lock-variable-name-face)
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-cite-attribution-face . gnus-cite-attribution-face)
+ (gnus-mouse-face . highlight)
+ (gnus-signature-face . gnus-signature-face)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (help-highlight-face . underline)
+ (idlwave-class-arrow-face . bold)
+ (idlwave-shell-breakpoint-face . idlwave-shell-bp-face)
+ (idlwave-shell-expression-face . secondary-selection)
+ (idlwave-shell-stop-line-face . highlight)
+ (ispell-highlight-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight)
+ (viper-insert-state-cursor-color . "Green")
+ (viper-replace-overlay-cursor-color . "Red")
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (Info-title-1-face ((t (:bold t :weight bold :family "helv" :height 1.728))))
+ (Info-title-2-face ((t (:bold t :family "helv" :weight bold :height 1.44))))
+ (Info-title-3-face ((t (:bold t :weight bold :family "helv" :height 1.2))))
+ (Info-title-4-face ((t (:bold t :family "helv" :weight bold))))
+ (antlr-font-lock-keyword-face ((t (:bold t :foreground "black" :weight bold))))
+ (antlr-font-lock-literal-face ((t (:bold t :foreground "brown4" :weight bold))))
+ (antlr-font-lock-ruledef-face ((t (:bold t :foreground "blue" :weight bold))))
+ (antlr-font-lock-ruleref-face ((t (:foreground "blue4"))))
+ (antlr-font-lock-tokendef-face ((t (:bold t :foreground "blue" :weight bold))))
+ (antlr-font-lock-tokenref-face ((t (:foreground "orange4"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (calendar-today-face ((t (:underline t))))
+ (change-log-acknowledgement-face ((t (:foreground "Firebrick"))))
+ (change-log-conditionals-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-date-face ((t (:foreground "RosyBrown"))))
+ (change-log-email-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-file-face ((t (:foreground "Blue"))))
+ (change-log-function-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-list-face ((t (:foreground "Purple"))))
+ (change-log-name-face ((t (:foreground "CadetBlue"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "dark blue"))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue" :weight bold))))
+ (cperl-hash-face ((t (:italic t :bold t :background "lightyellow2" :foreground "Red" :slant italic :weight bold))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (cursor ((t (:background "black"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "gray85"))))
+ (custom-comment-tag-face ((t (:foreground "blue4"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:bold t :foreground "blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "red" :weight bold :height 1.2))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "blue" :weight bold :height 1.2))))
+ (cvs-filename-face ((t (:foreground "blue4"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:bold t :foreground "blue4" :weight bold))))
+ (cvs-marked-face ((t (:bold t :foreground "green3" :weight bold))))
+ (cvs-msg-face ((t (:italic t :slant italic))))
+ (cvs-need-action-face ((t (:foreground "orange"))))
+ (cvs-unknown-face ((t (:foreground "red"))))
+ (diary-face ((t (:foreground "red"))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (:foreground "grey50"))))
+ (diff-file-header-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-function-face ((t (:foreground "grey50"))))
+ (diff-header-face ((t (:background "grey85"))))
+ (diff-hunk-header-face ((t (:background "grey85"))))
+ (diff-index-face ((t (:bold t :weight bold :background "grey70"))))
+ (diff-nonexistent-face ((t (:bold t :weight bold :background "grey70"))))
+ (diff-removed-face ((t (nil))))
+ (dired-face-boring ((t (:foreground "RosyBrown"))))
+ (dired-face-directory ((t (:foreground "Blue"))))
+ (dired-face-executable ((t (nil))))
+ (dired-face-flagged ((t (:foreground "Red" :weight bold))))
+ (dired-face-marked ((t (:foreground "Red" :weight bold))))
+ (dired-face-permissions ((t (nil))))
+ (dired-face-setuid ((t (nil))))
+ (dired-face-socket ((t (nil))))
+ (dired-face-symlink ((t (:foreground "Purple"))))
+ (ebrowse-default-face ((t (nil))))
+ (ebrowse-file-name-face ((t (:italic t :slant italic))))
+ (ebrowse-member-attribute-face ((t (:foreground "red"))))
+ (ebrowse-member-class-face ((t (:foreground "purple"))))
+ (ebrowse-progress-face ((t (:background "blue"))))
+ (ebrowse-root-class-face ((t (:bold t :foreground "blue" :weight bold))))
+ (ebrowse-tree-mark-face ((t (:foreground "red"))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid" :weight bold))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed" :weight bold))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Blue" :weight bold))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "ForestGreen" :weight bold))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red" :weight bold))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta" :weight bold))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "Dark Cyan" :weight bold))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Red" :weight bold))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed" :weight bold))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green" :weight bold))))
+ (excerpt ((t (:italic t :slant italic))))
+ (fixed ((t (:bold t :weight bold))))
+ (fixed-pitch ((t (:family "courier"))))
+ (flyspell-duplicate-face ((t (:bold t :foreground "Gold3" :underline t :weight bold))))
+ (flyspell-incorrect-face ((t (:bold t :foreground "OrangeRed" :underline t :weight bold))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:foreground "Firebrick"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-doc-face ((t (:foreground "RosyBrown"))))
+ (font-lock-doc-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-function-name-face ((t (:foreground "Blue"))))
+ (font-lock-keyword-face ((t (:foreground "Purple"))))
+ (font-lock-preprocessor-face ((t (:foreground "CadetBlue"))))
+ (font-lock-reference-face ((t (:foreground "Orchid"))))
+ (font-lock-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-type-face ((t (:foreground "ForestGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red" :weight bold))))
+ (fringe ((t (:background "grey95"))))
+ (gnus-cite-attribution-face ((t (:italic t :slant italic))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :weight bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t :slant italic))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t :weight bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :weight bold))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t :weight bold))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t :weight bold))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen" :weight bold))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4" :slant italic))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "MidnightBlue" :slant italic))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-signature-face ((t (:italic t :slant italic))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue" :slant italic))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen" :slant italic))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick" :slant italic))))
+ (gnus-summary-low-unread-face ((t (:italic t :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :background "grey90" :foreground "grey20" :box nil))))
+ (hi-black-b ((t (:bold t :weight bold))))
+ (hi-black-hb ((t (:bold t :family "helv" :weight bold :height 1.67))))
+ (hi-blue ((t (:background "light blue"))))
+ (hi-blue-b ((t (:bold t :foreground "blue" :weight bold))))
+ (hi-green ((t (:background "green"))))
+ (hi-green-b ((t (:bold t :foreground "green" :weight bold))))
+ (hi-pink ((t (:background "pink"))))
+ (hi-red-b ((t (:bold t :foreground "red" :weight bold))))
+ (hi-yellow ((t (:background "yellow"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (highlight-changes-delete-face ((t (:foreground "red" :underline t))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (holiday-face ((t (:background "pink"))))
+ (idlwave-help-link-face ((t (:foreground "Blue"))))
+ (idlwave-shell-bp-face ((t (:background "Pink" :foreground "Black"))))
+ (info-header-node ((t (:italic t :bold t :weight bold :slant italic :foreground "brown"))))
+ (info-header-xref ((t (:bold t :weight bold :foreground "magenta4"))))
+ (info-menu-5 ((t (:foreground "red1"))))
+ (info-menu-header ((t (:bold t :family "helv" :weight bold))))
+ (info-node ((t (:italic t :bold t :foreground "brown" :slant italic :weight bold))))
+ (info-xref ((t (:bold t :foreground "magenta4" :weight bold))))
+ (isearch ((t (:background "magenta4" :foreground "lightskyblue1"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t :slant italic))))
+ (log-view-file-face ((t (:bold t :background "grey70" :weight bold))))
+ (log-view-message-face ((t (:background "grey85"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (menu ((t (nil))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue" :weight bold))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (modeline-buffer-id ((t (:bold t :background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (modeline-mousable ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (modeline-mousable-minor-mode ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (mouse ((t (:background "black"))))
+ (primary-selection ((t (:background "lightgoldenrod2"))))
+ (reb-match-0 ((t (:background "lightblue"))))
+ (reb-match-1 ((t (:background "aquamarine"))))
+ (reb-match-2 ((t (:background "springgreen"))))
+ (reb-match-3 ((t (:background "yellow"))))
+ (region ((t (:background "lightgoldenrod2"))))
+ (scroll-bar ((t (:background "grey75"))))
+ (secondary-selection ((t (:background "yellow"))))
+ (sh-heredoc-face ((t (:foreground "tan"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (show-tabs-space-face ((t (:foreground "yellow"))))
+ (show-tabs-tab-face ((t (:foreground "red"))))
+ (smerge-base-face ((t (:foreground "red"))))
+ (smerge-markers-face ((t (:background "grey85"))))
+ (smerge-mine-face ((t (:foreground "blue"))))
+ (smerge-other-face ((t (:foreground "darkgreen"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (strokes-char-face ((t (:background "lightgray"))))
+ (term-black ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-blackbg ((t (:stipple nil :background "black" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-blue ((t (:stipple nil :background "white" :foreground "blue" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-bluebg ((t (:stipple nil :background "blue" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-bold ((t (:bold t :stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight bold :width normal :family "adobe-courier"))))
+ (term-cyan ((t (:stipple nil :background "white" :foreground "cyan" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-cyanbg ((t (:stipple nil :background "cyan" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-bg ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-bg-inv ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-fg ((t (:stipple nil :background "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-fg-inv ((t (:stipple nil :background "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-green ((t (:stipple nil :background "white" :foreground "green" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-greenbg ((t (:stipple nil :background "green" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-invisible ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-invisible-inv ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-magenta ((t (:stipple nil :background "white" :foreground "magenta" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-magentabg ((t (:stipple nil :background "magenta" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-red ((t (:stipple nil :background "white" :foreground "red" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-redbg ((t (:stipple nil :background "red" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-underline ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline t :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-white ((t (:stipple nil :background "white" :foreground "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-whitebg ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-yellow ((t (:stipple nil :background "white" :foreground "yellow" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-yellowbg ((t (:stipple nil :background "yellow" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (tex-math-face ((t (:foreground "RosyBrown"))))
+ (texinfo-heading-face ((t (:foreground "Blue"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (vcursor ((t (:background "cyan" :foreground "blue" :underline t))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red" :weight bold))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange" :weight bold))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:foreground "Blue" :underline t))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:foreground "DarkGoldenrod" :underline t))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:foreground "ForestGreen" :underline t))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:foreground "Brown" :underline t))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:foreground "Grey50" :underline t))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (woman-addition-face ((t (:foreground "orange"))))
+ (woman-bold-face ((t (:bold t :foreground "blue" :weight bold))))
+ (woman-italic-face ((t (:italic t :foreground "red" :underline t :slant italic))))
+ (woman-unknown-face ((t (:foreground "brown"))))
+ (zmacs-region ((t (:background "lightgoldenrod2")))))))
+
+(defun color-theme-jsc-light2 ()
+ "Color theme by John S Cooper, created 2001-10-29.
+This builds on `color-theme-jsc-light'."
+ (interactive)
+ (color-theme-jsc-light)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-install
+ '(color-theme-jsc-light2
+ ((vc-annotate-very-old-color . "#0046FF")
+ (senator-eldoc-use-color . t))
+ nil
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (change-log-file-face ((t (:foreground "Blue"))))
+ (change-log-name-face ((t (:foreground "Maroon"))))
+ (comint-highlight-prompt ((t (:foreground "dark blue"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:bold t :foreground "blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "red" :weight bold :height 1.2))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "blue" :weight bold :height 1.2))))
+ (font-lock-constant-face ((t (:foreground "Maroon"))))
+ (font-lock-function-name-face ((t (:foreground "Blue"))))
+ (font-lock-type-face ((t (:italic t :foreground "Navy" :slant italic))))
+ (fringe ((t (:background "grey88"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "Blue2"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen" :weight bold))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4" :slant italic))))
+ (gnus-header-name-face ((t (:bold t :foreground "maroon" :weight bold))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-signature-face ((t (:italic t :slant italic))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :weight bold))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "Navy"))))
+ (gnus-summary-normal-unread-face ((t (:bold t :foreground "DarkGreen" :weight bold))))
+ (header-line ((t (:background "grey90" :foreground "grey20" :box nil))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (ido-subdir-face ((t (:foreground "red"))))
+ (isearch ((t (:background "magenta4" :foreground "lightskyblue1"))))
+ (mode-line ((t (:background "grey88" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (region ((t (:background "lightgoldenrod2"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "yellow"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))))))
+
+(defun color-theme-ld-dark ()
+ "Dark Color theme by Linh Dang, created 2001-11-06."
+ (interactive)
+ (color-theme-install
+ '(color-theme-ld-dark
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "yellow")
+ (foreground-color . "white")
+ (mouse-color . "white"))
+ ((align-highlight-change-face . highlight)
+ (align-highlight-nochange-face . secondary-selection)
+ (apropos-keybinding-face . underline)
+ (apropos-label-face . italic)
+ (apropos-match-face . secondary-selection)
+ (apropos-property-face . bold-italic)
+ (apropos-symbol-face . bold)
+ (ebnf-except-border-color . "Black")
+ (ebnf-line-color . "Black")
+ (ebnf-non-terminal-border-color . "Black")
+ (ebnf-repeat-border-color . "Black")
+ (ebnf-special-border-color . "Black")
+ (ebnf-terminal-border-color . "Black")
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-carpal-button-face . bold)
+ (gnus-carpal-header-face . bold-italic)
+ (gnus-cite-attribution-face . gnus-cite-attribution-face)
+ (gnus-mouse-face . highlight)
+ (gnus-selected-tree-face . modeline)
+ (gnus-signature-face . gnus-signature-face)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (ps-line-number-color . "black")
+ (ps-zebra-color . 0.95)
+ (tags-tag-face . default)
+ (vc-annotate-very-old-color . "#0046FF")
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "black" :foreground "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-courier new"))))
+ (Info-title-1-face ((t (:bold t :weight bold :family "helv" :height 1.728))))
+ (Info-title-2-face ((t (:bold t :family "helv" :weight bold :height 1.44))))
+ (Info-title-3-face ((t (:bold t :weight bold :family "helv" :height 1.2))))
+ (Info-title-4-face ((t (:bold t :family "helv" :weight bold))))
+ (bbdb-company ((t (:italic t :slant italic))))
+ (bbdb-field-name ((t (:bold t :weight bold))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (:underline t))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (change-log-acknowledgement-face ((t (:italic t :slant oblique :foreground "AntiqueWhite3"))))
+ (change-log-conditionals-face ((t (:foreground "Aquamarine"))))
+ (change-log-date-face ((t (:italic t :slant oblique :foreground "BurlyWood"))))
+ (change-log-email-face ((t (:foreground "Aquamarine"))))
+ (change-log-file-face ((t (:bold t :family "Verdana" :weight bold :foreground "LightSkyBlue" :height 0.9))))
+ (change-log-function-face ((t (:foreground "Aquamarine"))))
+ (change-log-list-face ((t (:foreground "LightSkyBlue"))))
+ (change-log-name-face ((t (:bold t :weight bold :foreground "Gold"))))
+ (clear-case-mode-string-face ((t (:bold t :family "Arial" :box (:line-width 2 :color "grey" :style released-button) :foreground "black" :background "grey" :weight bold :height 0.9))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cursor ((t (:background "yellow"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "dim gray"))))
+ (custom-comment-tag-face ((t (:foreground "gray80"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.1))))
+ (custom-group-tag-face ((t (:bold t :family "helv" :foreground "light blue" :weight bold :height 1.1))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "pink" :weight bold :height 1.1))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "lime green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "light blue" :weight bold :height 1.2))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (:foreground "grey70"))))
+ (diff-file-header-face ((t (:bold t :background "grey60" :weight bold))))
+ (diff-function-face ((t (:foreground "grey70"))))
+ (diff-header-face ((t (:background "grey45"))))
+ (diff-hunk-header-face ((t (:background "grey45"))))
+ (diff-index-face ((t (:bold t :weight bold :background "grey60"))))
+ (diff-nonexistent-face ((t (:bold t :weight bold :background "grey60"))))
+ (diff-removed-face ((t (nil))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:foreground "SteelBlue"))))
+ (font-lock-comment-face ((t (:italic t :foreground "AntiqueWhite3" :slant oblique))))
+ (font-lock-constant-face ((t (:bold t :foreground "Gold" :weight bold))))
+ (font-lock-doc-face ((t (:italic t :slant oblique :foreground "BurlyWood"))))
+ (font-lock-doc-string-face ((t (:italic t :slant oblique :foreground "BurlyWood"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "LightSkyBlue" :weight bold :height 0.9 :family "Verdana"))))
+ (font-lock-keyword-face ((t (:foreground "LightSkyBlue"))))
+ (font-lock-preprocessor-face ((t (:bold t :foreground "Gold" :weight bold))))
+ (font-lock-reference-face ((t (:foreground "SteelBlue"))))
+ (font-lock-string-face ((t (:italic t :foreground "BurlyWood" :slant oblique))))
+ (font-lock-type-face ((t (:bold t :foreground "PaleGreen" :weight bold :height 0.9 :family "Verdana"))))
+ (font-lock-variable-name-face ((t (:foreground "Aquamarine"))))
+ (font-lock-warning-face ((t (:bold t :foreground "chocolate" :weight bold))))
+ (fringe ((t (:family "outline-courier new" :width normal :weight normal :slant normal :underline nil :overline nil :strike-through nil :box nil :inverse-video nil :stipple nil :background "grey4" :foreground "Wheat"))))
+ (gnus-cite-attribution-face ((t (:italic t :slant italic))))
+ (gnus-cite-face-1 ((t (:foreground "light blue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "light cyan"))))
+ (gnus-cite-face-3 ((t (:foreground "light yellow"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :weight bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t :slant italic))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t :weight bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "aquamarine3" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :weight bold))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t :weight bold))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t :weight bold))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise" :weight bold))))
+ (gnus-header-content-face ((t (:italic t :foreground "forest green" :slant italic))))
+ (gnus-header-from-face ((t (:foreground "spring green"))))
+ (gnus-header-name-face ((t (:foreground "SeaGreen"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "yellow" :slant italic))))
+ (gnus-header-subject-face ((t (:foreground "SeaGreen3"))))
+ (gnus-signature-face ((t (:italic t :slant italic))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "pink" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue" :slant italic))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen" :slant italic))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "pink" :slant italic))))
+ (gnus-summary-low-unread-face ((t (:italic t :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (header-line ((t (:family "Arial" :background "grey20" :foreground "grey75" :box (:line-width 3 :color "grey20" :style released-button) :height 0.9))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (info-header-node ((t (:italic t :bold t :weight bold :slant italic :foreground "white"))))
+ (info-header-xref ((t (:bold t :weight bold :foreground "cyan"))))
+ (info-menu-5 ((t (:foreground "red1"))))
+ (info-menu-header ((t (:bold t :family "helv" :weight bold))))
+ (info-node ((t (:italic t :bold t :foreground "white" :slant italic :weight bold))))
+ (info-xref ((t (:bold t :foreground "cyan" :weight bold))))
+ (isearch ((t (:background "palevioletred2"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (menu ((t (nil))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4" :weight bold))))
+ (message-header-name-face ((t (:foreground "DarkGreen"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "#b00000"))))
+ (message-header-subject-face ((t (:foreground "green3"))))
+ (message-header-to-face ((t (:bold t :foreground "green2" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "blue3"))))
+ (modeline ((t (:background "grey" :foreground "black" :box (:line-width 2 :color "grey" :style released-button) :height 0.9 :family "Arial"))))
+ (modeline-mousable-minor-mode ((t (:background "grey" :foreground "black" :box (:line-width 2 :color "grey" :style released-button) :height 0.9 :family "Arial"))))
+ (modeline-mousable ((t (:background "grey" :foreground "black" :box (:line-width 2 :color "grey" :style released-button) :height 0.9 :family "Arial"))))
+ (modeline-buffer-id ((t (:background "grey" :foreground "black" :box (:line-width 2 :color "grey" :style released-button) :height 0.9 :family "Arial"))))
+ (mouse ((t (:background "white"))))
+ (primary-selection ((t (:background "DarkSlateGray"))))
+ (region ((t (:background "DarkSlateGray"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "SkyBlue4"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (trailing-whitespace ((t (:background "white"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray"))))
+ (zmacs-region ((t (:background "DarkSlateGray")))))))
+
+(defun color-theme-deep-blue ()
+ "Color theme by Tomas Cerha, created 2001-11-13."
+ (interactive)
+ (color-theme-install
+ '(color-theme-deep-blue
+ ((background-color . "#102e4e")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "green")
+ (foreground-color . "#eeeeee")
+ (mouse-color . "white"))
+ ((browse-kill-ring-separator-face . bold)
+ (display-time-mail-face . mode-line)
+ (help-highlight-face . underline)
+ (list-matching-lines-face . secondary-selection)
+ (vc-annotate-very-old-color . "#0046FF")
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "#102e4e" :foreground "#eeeeee" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "misc-fixed"))))
+ (Info-title-1-face ((t (:bold t :weight bold :family "helv" :height 1.728))))
+ (Info-title-2-face ((t (:bold t :family "helv" :weight bold :height 1.44))))
+ (Info-title-3-face ((t (:bold t :weight bold :family "helv" :height 1.2))))
+ (Info-title-4-face ((t (:bold t :family "helv" :weight bold))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (calendar-today-face ((t (:background "blue"))))
+ (change-log-acknowledgement-face ((t (:italic t :slant italic :foreground "CadetBlue"))))
+ (change-log-conditionals-face ((t (:foreground "SeaGreen2"))))
+ (change-log-date-face ((t (:foreground "burlywood"))))
+ (change-log-email-face ((t (:foreground "SeaGreen2"))))
+ (change-log-file-face ((t (:bold t :weight bold :foreground "goldenrod"))))
+ (change-log-function-face ((t (:foreground "SeaGreen2"))))
+ (change-log-list-face ((t (:bold t :weight bold :foreground "DeepSkyBlue1"))))
+ (change-log-name-face ((t (:foreground "gold"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cursor ((t (:background "green" :foreground "black"))))
+ (cvs-filename-face ((t (:foreground "lightblue"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:bold t :foreground "lightyellow" :weight bold))))
+ (cvs-marked-face ((t (:bold t :foreground "green" :weight bold))))
+ (cvs-msg-face ((t (:italic t :slant italic))))
+ (cvs-need-action-face ((t (:foreground "orange"))))
+ (cvs-unknown-face ((t (:foreground "red"))))
+ (diary-face ((t (:foreground "orange red"))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (:foreground "grey70"))))
+ (diff-file-header-face ((t (:bold t :background "grey60" :weight bold))))
+ (diff-function-face ((t (:foreground "grey70"))))
+ (diff-header-face ((t (:background "grey45"))))
+ (diff-hunk-header-face ((t (:background "grey45"))))
+ (diff-index-face ((t (:bold t :weight bold :background "grey60"))))
+ (diff-nonexistent-face ((t (:bold t :weight bold :background "grey60"))))
+ (diff-removed-face ((t (nil))))
+ (fixed-pitch ((t (:family "fixed"))))
+ (font-latex-bold-face ((t (:bold t :foreground "OliveDrab" :weight bold))))
+ (font-latex-italic-face ((t (:italic t :foreground "OliveDrab" :slant italic))))
+ (font-latex-math-face ((t (:foreground "burlywood"))))
+ (font-latex-sedate-face ((t (:foreground "LightGray"))))
+ (font-latex-string-face ((t (:foreground "LightSalmon"))))
+ (font-latex-warning-face ((t (:bold t :foreground "Pink" :weight bold))))
+ (font-lock-builtin-face ((t (:foreground "LightCoral"))))
+ (font-lock-comment-face ((t (:italic t :foreground "CadetBlue" :slant italic))))
+ (font-lock-constant-face ((t (:foreground "gold"))))
+ (font-lock-doc-face ((t (:foreground "BlanchedAlmond"))))
+ (font-lock-doc-string-face ((t (:foreground "BlanchedAlmond"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "goldenrod" :weight bold))))
+ (font-lock-keyword-face ((t (:bold t :foreground "DeepSkyBlue1" :weight bold))))
+ (font-lock-preprocessor-face ((t (:foreground "gold"))))
+ (font-lock-reference-face ((t (:foreground "LightCoral"))))
+ (font-lock-string-face ((t (:foreground "burlywood"))))
+ (font-lock-type-face ((t (:foreground "CadetBlue1"))))
+ (font-lock-variable-name-face ((t (:foreground "SeaGreen2"))))
+ (font-lock-warning-face ((t (:foreground "yellow"))))
+ (fringe ((t (:background "#405060"))))
+ (header-line ((t (:box (:line-width 2 :style released-button) :background "grey20" :foreground "grey90" :box nil))))
+ (highlight ((t (:background "darkgreen"))))
+ (holiday-face ((t (:foreground "green"))))
+ (info-header-node ((t (:foreground "DeepSkyBlue1"))))
+ (info-header-xref ((t (:bold t :weight bold :foreground "SeaGreen2"))))
+ (info-menu-5 ((t (:foreground "wheat"))))
+ (info-menu-header ((t (:bold t :family "helv" :weight bold))))
+ (info-node ((t (:foreground "DeepSkyBlue1"))))
+ (info-xref ((t (:bold t :foreground "SeaGreen2" :weight bold))))
+ (isearch ((t (:background "palevioletred2" :foreground "brown4"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (menu ((t (:background "gray" :foreground "black" :family "helvetica"))))
+ (modeline ((t (:background "gray" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (modeline-buffer-id ((t (:background "gray" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (modeline-mousable ((t (:background "gray" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (modeline-mousable-minor-mode ((t (:background "gray" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (mouse ((t (:background "white"))))
+ (region ((t (:background "DarkCyan"))))
+ (scroll-bar ((t (:background "gray" :foreground "#506070"))))
+ (secondary-selection ((t (:background "yellow" :foreground "gray10"))))
+ (show-paren-match-face ((t (:bold t :foreground "yellow" :weight bold))))
+ (show-paren-mismatch-face ((t (:bold t :foreground "red" :weight bold))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "#102e4e"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray")))))))
+
+(defun color-theme-kingsajz ()
+ "Color theme by Olgierd \"Kingsajz\" Ziolko, created 2001-12-04.
+Another theme with wheat on DarkSlatGrey. Based on Subtle Hacker.
+Used on Emacs 21.1 @ WinMe. Not tested on any other systems.
+
+Some faces uses Andale mono font (nice fixed-width font).
+It is available at: http://www.microsoft.com/typography/downloads/andale32.exe
+
+Hail Eris! All hail Discordia!"
+ (interactive)
+ (color-theme-install
+ '(color-theme-kingsajz
+ ((background-color . "darkslategrey")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "LightGray")
+ (foreground-color . "wheat")
+ (mouse-color . "Grey"))
+ ((apropos-keybinding-face . underline)
+ (apropos-label-face face italic mouse-face highlight)
+ (apropos-match-face . secondary-selection)
+ (apropos-property-face . bold-italic)
+ (apropos-symbol-face . info-xref)
+ (display-time-mail-face . mode-line)
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-carpal-button-face . bold)
+ (gnus-carpal-header-face . bold-italic)
+ (gnus-cite-attribution-face . gnus-cite-attribution-face)
+ (gnus-mouse-face . highlight)
+ (gnus-selected-tree-face . modeline)
+ (gnus-signature-face . gnus-signature-face)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (gnus-treat-display-xface . head)
+ (help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "darkslategrey" :foreground "wheat" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-andale mono"))))
+ (bbdb-field-name ((t (:foreground "green"))))
+ (bg:erc-color-face0 ((t (:background "White"))))
+ (bg:erc-color-face1 ((t (:background "black"))))
+ (bg:erc-color-face10 ((t (:background "lightblue1"))))
+ (bg:erc-color-face11 ((t (:background "cyan"))))
+ (bg:erc-color-face12 ((t (:background "blue"))))
+ (bg:erc-color-face13 ((t (:background "deeppink"))))
+ (bg:erc-color-face14 ((t (:background "gray50"))))
+ (bg:erc-color-face15 ((t (:background "gray90"))))
+ (bg:erc-color-face2 ((t (:background "blue4"))))
+ (bg:erc-color-face3 ((t (:background "green4"))))
+ (bg:erc-color-face4 ((t (:background "red"))))
+ (bg:erc-color-face5 ((t (:background "brown"))))
+ (bg:erc-color-face6 ((t (:background "purple"))))
+ (bg:erc-color-face7 ((t (:background "orange"))))
+ (bg:erc-color-face8 ((t (:background "yellow"))))
+ (bg:erc-color-face9 ((t (:background "green"))))
+ (blue ((t (:foreground "cyan"))))
+ (bold ((t (:bold t :foreground "OrangeRed" :weight bold :family "Arial"))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold :family "Arial"))))
+ (border ((t (:background "black"))))
+ (calendar-today-face ((t (:underline t))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cperl-array-face ((t (:foreground "Yellow"))))
+ (cperl-hash-face ((t (:foreground "White"))))
+ (cperl-nonoverridable-face ((t (:foreground "SkyBlue"))))
+ (cursor ((t (:background "LightGray"))))
+ (custom-button-face ((t (:foreground "MediumSlateBlue" :underline t))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "dim gray"))))
+ (custom-comment-tag-face ((t (:foreground "gray80"))))
+ (custom-documentation-face ((t (:foreground "Grey"))))
+ (custom-face-tag-face ((t (:bold t :family "Arial" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:foreground "MediumAquamarine"))))
+ (custom-group-tag-face-1 ((t (:bold t :family "Arial" :foreground "pink" :weight bold :height 1.2))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "Coral"))))
+ (custom-variable-button-face ((t (:underline t))))
+ (custom-variable-tag-face ((t (:foreground "Aquamarine"))))
+ (date ((t (:foreground "green"))))
+ (diary-face ((t (:bold t :foreground "IndianRed" :weight bold))))
+ (dired-face-directory ((t (:bold t :foreground "sky blue" :weight bold))))
+ (dired-face-executable ((t (:foreground "green yellow"))))
+ (dired-face-flagged ((t (:foreground "tomato"))))
+ (dired-face-marked ((t (:foreground "light salmon"))))
+ (dired-face-permissions ((t (:foreground "aquamarine"))))
+ (erc-action-face ((t (:bold t :weight bold))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "pale green"))))
+ (erc-error-face ((t (:bold t :foreground "IndianRed" :weight bold))))
+ (erc-highlight-face ((t (:bold t :foreground "pale green" :weight bold))))
+ (erc-host-danger-face ((t (:foreground "red"))))
+ (erc-input-face ((t (:foreground "light blue"))))
+ (erc-inverse-face ((t (:background "steel blue"))))
+ (erc-notice-face ((t (:foreground "light salmon"))))
+ (erc-pal-face ((t (:foreground "pale green"))))
+ (erc-prompt-face ((t (:bold t :foreground "light blue" :weight bold))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed" :weight bold))))
+ (eshell-ls-backup-face ((t (:foreground "Grey"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "DimGray" :weight bold))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "MediumSlateBlue" :weight bold))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "Coral" :weight bold))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "black" :weight bold))))
+ (eshell-ls-picture-face ((t (:foreground "Violet"))))
+ (eshell-ls-product-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-readonly-face ((t (:foreground "Aquamarine"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Gold" :weight bold))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "White" :weight bold))))
+ (eshell-ls-text-face ((t (:foreground "medium aquamarine"))))
+ (eshell-ls-todo-face ((t (:bold t :foreground "aquamarine" :weight bold))))
+ (eshell-ls-unreadable-face ((t (:foreground "DimGray"))))
+ (eshell-prompt-face ((t (:foreground "powder blue"))))
+ (face-1 ((t (:stipple nil :foreground "royal blue" :family "andale mono"))))
+ (face-2 ((t (:stipple nil :foreground "DeepSkyBlue1" :overline nil :underline nil :slant normal :family "outline-andale mono"))))
+ (face-3 ((t (:stipple nil :foreground "NavajoWhite3"))))
+ (fg:erc-color-face0 ((t (:foreground "white"))))
+ (fg:erc-color-face1 ((t (:foreground "beige"))))
+ (fg:erc-color-face10 ((t (:foreground "pale goldenrod"))))
+ (fg:erc-color-face11 ((t (:foreground "light goldenrod yellow"))))
+ (fg:erc-color-face12 ((t (:foreground "light yellow"))))
+ (fg:erc-color-face13 ((t (:foreground "yellow"))))
+ (fg:erc-color-face14 ((t (:foreground "light goldenrod"))))
+ (fg:erc-color-face15 ((t (:foreground "lime green"))))
+ (fg:erc-color-face2 ((t (:foreground "lemon chiffon"))))
+ (fg:erc-color-face3 ((t (:foreground "light cyan"))))
+ (fg:erc-color-face4 ((t (:foreground "powder blue"))))
+ (fg:erc-color-face5 ((t (:foreground "sky blue"))))
+ (fg:erc-color-face6 ((t (:foreground "dark sea green"))))
+ (fg:erc-color-face7 ((t (:foreground "pale green"))))
+ (fg:erc-color-face8 ((t (:foreground "medium spring green"))))
+ (fg:erc-color-face9 ((t (:foreground "khaki"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "PaleGreen" :weight bold))))
+ (font-lock-comment-face ((t (:foreground "White"))))
+ (font-lock-constant-face ((t (:bold t :foreground "Aquamarine" :weight bold))))
+ (font-lock-doc-face ((t (:italic t :slant italic :foreground "LightSalmon"))))
+ (font-lock-doc-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "MediumSlateBlue" :weight bold))))
+ (font-lock-keyword-face ((t (:foreground "Salmon"))))
+ (font-lock-preprocessor-face ((t (:foreground "Salmon"))))
+ (font-lock-reference-face ((t (:foreground "pale green"))))
+ (font-lock-string-face ((t (:italic t :foreground "LightSalmon" :slant italic))))
+ (font-lock-type-face ((t (:bold t :foreground "YellowGreen" :weight bold))))
+ (font-lock-variable-name-face ((t (:italic t :bold t :foreground "Aquamarine" :slant italic :weight bold))))
+ (font-lock-warning-face ((t (:bold t :foreground "IndianRed" :weight bold))))
+ (fringe ((t (:background "darkslategrey"))))
+ (gnus-cite-attribution-face ((t (:family "arial"))))
+ (gnus-cite-face-1 ((t (:foreground "DarkGoldenrod3"))))
+ (gnus-cite-face-10 ((t (nil))))
+ (gnus-cite-face-11 ((t (nil))))
+ (gnus-cite-face-2 ((t (:foreground "IndianRed3"))))
+ (gnus-cite-face-3 ((t (:foreground "tomato"))))
+ (gnus-cite-face-4 ((t (:foreground "yellow green"))))
+ (gnus-cite-face-5 ((t (:foreground "SteelBlue3"))))
+ (gnus-cite-face-6 ((t (:foreground "Azure3"))))
+ (gnus-cite-face-7 ((t (:foreground "Azure4"))))
+ (gnus-cite-face-8 ((t (:foreground "SpringGreen4"))))
+ (gnus-cite-face-9 ((t (:foreground "SlateGray4"))))
+ (gnus-emphasis-bold ((t (:bold t :foreground "greenyellow" :weight bold :family "Arial"))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :foreground "OrangeRed1" :slant italic :weight bold :family "arial"))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "khaki"))))
+ (gnus-emphasis-italic ((t (:italic t :bold t :foreground "orange" :slant italic :weight bold :family "Arial"))))
+ (gnus-emphasis-underline ((t (:foreground "greenyellow" :underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :foreground "khaki" :underline t :weight bold :family "Arial"))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold :family "Arial"))))
+ (gnus-emphasis-underline-italic ((t (:italic t :foreground "orange" :underline t :slant italic :family "Arial"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "Salmon4"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "firebrick1" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "turquoise4"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "LightCyan4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "LightCyan1" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "SteelBlue4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "SteelBlue2" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "Salmon4"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "FireBrick1" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "darkorange3"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "dark orange" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (:foreground "turquoise4"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "Aquamarine" :weight bold))))
+ (gnus-group-news-4-empty-face ((t (:foreground "SpringGreen4"))))
+ (gnus-group-news-4-face ((t (:bold t :foreground "SpringGreen2" :weight bold))))
+ (gnus-group-news-5-empty-face ((t (:foreground "OliveDrab4"))))
+ (gnus-group-news-5-face ((t (:bold t :foreground "OliveDrab2" :weight bold))))
+ (gnus-group-news-6-empty-face ((t (:foreground "DarkGoldenrod4"))))
+ (gnus-group-news-6-face ((t (:bold t :foreground "DarkGoldenrod3" :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "wheat4"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "tan4" :weight bold))))
+ (gnus-header-content-face ((t (:foreground "LightSkyBlue3"))))
+ (gnus-header-from-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (gnus-header-name-face ((t (:bold t :foreground "DodgerBlue1" :weight bold))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "LightSkyBlue3" :slant italic :weight bold))))
+ (gnus-header-subject-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (gnus-signature-face ((t (:italic t :foreground "salmon" :slant italic))))
+ (gnus-splash-face ((t (:foreground "Firebrick1"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "MistyRose4" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "tomato3" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "coral" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:italic t :bold t :foreground "red1" :slant italic :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "DarkSeaGreen4" :slant italic))))
+ (gnus-summary-low-read-face ((t (:foreground "SeaGreen4"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "Green4" :slant italic))))
+ (gnus-summary-low-unread-face ((t (:italic t :foreground "green3" :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "khaki4"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "khaki3"))))
+ (gnus-summary-normal-unread-face ((t (:foreground "khaki"))))
+ (gnus-summary-selected-face ((t (:foreground "gold" :underline t))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:foreground "red" :background "black"))))
+ (gui-element ((t (:bold t :background "#ffffff" :foreground "#000000" :weight bold))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :background "grey20" :foreground "grey90" :box nil))))
+ (highlight ((t (:background "PaleGreen" :foreground "DarkGreen"))))
+ (highline-face ((t (:background "SeaGreen"))))
+ (holiday-face ((t (:background "DimGray"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:bold t :foreground "DodgerBlue1" :underline t :weight bold))))
+ (info-xref ((t (:bold t :foreground "DodgerBlue3" :weight bold))))
+ (isearch ((t (:background "sea green" :foreground "black"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :foreground "chocolate3" :slant italic))))
+ (menu ((t (nil))))
+ (message-cited-text-face ((t (:foreground "White"))))
+ (message-header-cc-face ((t (:foreground "light cyan"))))
+ (message-header-name-face ((t (:foreground "DodgerBlue1"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "LightSkyBlue3" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "LightSkyBlue3"))))
+ (message-header-subject-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (message-header-to-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "DodgerBlue3"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:background "cornflower blue" :foreground "chocolate"))))
+ (modeline ((t (:background "dark olive green" :foreground "wheat" :box (:line-width -1 :style released-button)))))
+ (modeline-buffer-id ((t (:bold t :background "dark olive green" :foreground "beige" :weight bold :family "arial"))))
+ (modeline-mousable ((t (:bold t :background "dark olive green" :foreground "yellow green" :weight bold :family "arial"))))
+ (modeline-mousable-minor-mode ((t (:bold t :background "dark olive green" :foreground "wheat" :weight bold :family "arial"))))
+ (mouse ((t (:background "Grey"))))
+ (paren-blink-off ((t (:foreground "brown"))))
+ (region ((t (:background "dark cyan" :foreground "cyan"))))
+ (ruler-mode-column-number-face ((t (:box (:color "grey76" :line-width 1 :style released-button) :background "grey76" :stipple nil :inverse-video nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-andale mono" :foreground "black"))))
+ (ruler-mode-current-column-face ((t (:bold t :box (:color "grey76" :line-width 1 :style released-button) :background "grey76" :stipple nil :inverse-video nil :strike-through nil :overline nil :underline nil :slant normal :width normal :family "outline-andale mono" :foreground "yellow" :weight bold))))
+ (ruler-mode-default-face ((t (:family "outline-andale mono" :width normal :weight normal :slant normal :underline nil :overline nil :strike-through nil :inverse-video nil :stipple nil :background "grey76" :foreground "grey64" :box (:color "grey76" :line-width 1 :style released-button)))))
+ (ruler-mode-fill-column-face ((t (:box (:color "grey76" :line-width 1 :style released-button) :background "grey76" :stipple nil :inverse-video nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-andale mono" :foreground "red"))))
+ (ruler-mode-margins-face ((t (:box (:color "grey76" :line-width 1 :style released-button) :foreground "grey64" :stipple nil :inverse-video nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-andale mono" :background "grey64"))))
+ (ruler-mode-tab-stop-face ((t (:box (:color "grey76" :line-width 1 :style released-button) :background "grey76" :stipple nil :inverse-video nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-andale mono" :foreground "steelblue"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "Aquamarine" :foreground "SlateBlue"))))
+ (show-paren-match-face ((t (:bold t :background "Aquamarine" :foreground "steel blue" :weight bold))))
+ (show-paren-mismatch-face ((t (:background "Red" :foreground "White"))))
+ (swbuff-current-buffer-face ((t (:bold t :foreground "red" :weight bold))))
+ (text-cursor ((t (:background "Red" :foreground "white"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "Arial"))))
+ (w3m-anchor-face ((t (:bold t :foreground "DodgerBlue1" :weight bold))))
+ (w3m-arrived-anchor-face ((t (:bold t :foreground "DodgerBlue3" :weight bold))))
+ (w3m-header-line-location-content-face ((t (:background "dark olive green" :foreground "wheat"))))
+ (w3m-header-line-location-title-face ((t (:background "dark olive green" :foreground "beige"))))
+ (widget-button-face ((t (:bold t :foreground "green" :weight bold :family "courier"))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:foreground "LightBlue"))))
+ (widget-inactive-face ((t (:foreground "DimGray"))))
+ (widget-single-line-field-face ((t (:foreground "LightBlue"))))
+ (woman-bold-face ((t (:bold t :weight bold :family "Arial"))))
+ (woman-italic-face ((t (:italic t :foreground "beige" :slant italic :family "Arial"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))
+ (zmacs-region ((t (:background "dark cyan" :foreground "cyan")))))))
+
+(defun color-theme-comidia ()
+ "Color theme by Marcelo Dias de Toledo, created 2001-12-17.
+Steel blue on black."
+ (interactive)
+ (color-theme-install
+ '(color-theme-comidia
+ ((background-color . "Black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "SteelBlue")
+ (foreground-color . "SteelBlue")
+ (mouse-color . "SteelBlue"))
+ ((display-time-mail-face . mode-line)
+ (gnus-mouse-face . highlight)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (help-highlight-face . underline)
+ (ispell-highlight-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "Black" :foreground "SteelBlue" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width semi-condensed :family "misc-fixed"))))
+ (bg:erc-color-face0 ((t (:background "White"))))
+ (bg:erc-color-face1 ((t (:background "black"))))
+ (bg:erc-color-face10 ((t (:background "lightblue1"))))
+ (bg:erc-color-face11 ((t (:background "cyan"))))
+ (bg:erc-color-face12 ((t (:background "blue"))))
+ (bg:erc-color-face13 ((t (:background "deeppink"))))
+ (bg:erc-color-face14 ((t (:background "gray50"))))
+ (bg:erc-color-face15 ((t (:background "gray90"))))
+ (bg:erc-color-face2 ((t (:background "blue4"))))
+ (bg:erc-color-face3 ((t (:background "green4"))))
+ (bg:erc-color-face4 ((t (:background "red"))))
+ (bg:erc-color-face5 ((t (:background "brown"))))
+ (bg:erc-color-face6 ((t (:background "purple"))))
+ (bg:erc-color-face7 ((t (:background "orange"))))
+ (bg:erc-color-face8 ((t (:background "yellow"))))
+ (bg:erc-color-face9 ((t (:background "green"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cursor ((t (:background "SteelBlue"))))
+ (erc-action-face ((t (:bold t :weight bold))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-dangerous-host-face ((t (:foreground "red"))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "IndianRed"))))
+ (erc-error-face ((t (:background "Red" :foreground "White"))))
+ (erc-fool-face ((t (:foreground "dim gray"))))
+ (erc-input-face ((t (:foreground "brown"))))
+ (erc-inverse-face ((t (:background "Black" :foreground "White"))))
+ (erc-keyword-face ((t (:bold t :foreground "pale green" :weight bold))))
+ (erc-notice-face ((t (:bold t :foreground "SlateBlue" :weight bold))))
+ (erc-pal-face ((t (:bold t :foreground "Magenta" :weight bold))))
+ (erc-prompt-face ((t (:bold t :background "lightBlue2" :foreground "Black" :weight bold))))
+ (erc-timestamp-face ((t (:bold t :foreground "green" :weight bold))))
+ (erc-underline-face ((t (:underline t))))
+ (fg:erc-color-face0 ((t (:foreground "White"))))
+ (fg:erc-color-face1 ((t (:foreground "black"))))
+ (fg:erc-color-face10 ((t (:foreground "lightblue1"))))
+ (fg:erc-color-face11 ((t (:foreground "cyan"))))
+ (fg:erc-color-face12 ((t (:foreground "blue"))))
+ (fg:erc-color-face13 ((t (:foreground "deeppink"))))
+ (fg:erc-color-face14 ((t (:foreground "gray50"))))
+ (fg:erc-color-face15 ((t (:foreground "gray90"))))
+ (fg:erc-color-face2 ((t (:foreground "blue4"))))
+ (fg:erc-color-face3 ((t (:foreground "green4"))))
+ (fg:erc-color-face4 ((t (:foreground "red"))))
+ (fg:erc-color-face5 ((t (:foreground "brown"))))
+ (fg:erc-color-face6 ((t (:foreground "purple"))))
+ (fg:erc-color-face7 ((t (:foreground "orange"))))
+ (fg:erc-color-face8 ((t (:foreground "yellow"))))
+ (fg:erc-color-face9 ((t (:foreground "green"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "chocolate1"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-doc-face ((t (:foreground "LightSalmon"))))
+ (font-lock-doc-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-function-name-face ((t (:foreground "LightSkyBlue"))))
+ (font-lock-keyword-face ((t (:foreground "Cyan"))))
+ (font-lock-preprocessor-face ((t (:foreground "Aquamarine"))))
+ (font-lock-reference-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-type-face ((t (:foreground "PaleGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink" :weight bold))))
+ (fringe ((t (:background "grey10"))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "aquamarine3" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :weight bold))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t :weight bold))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t :weight bold))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise" :weight bold))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "pink" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue" :slant italic))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen" :slant italic))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "pink" :slant italic))))
+ (gnus-summary-low-unread-face ((t (:italic t :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (header-line ((t (:family "neep" :width condensed :box (:line-width 1 :style none) :background "grey20" :foreground "grey90" :box nil))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (isearch ((t (:background "palevioletred2" :foreground "brown4"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (menu ((t (nil))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4" :weight bold))))
+ (message-header-name-face ((t (:foreground "DarkGreen"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "#b00000"))))
+ (message-header-subject-face ((t (:foreground "green3"))))
+ (message-header-to-face ((t (:bold t :foreground "green2" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "blue3"))))
+ (modeline ((t (:background "Gray10" :foreground "SteelBlue" :box (:line-width 1 :style none) :width condensed :family "neep"))))
+ (modeline-buffer-id ((t (:background "Gray10" :foreground "SteelBlue" :box (:line-width 1 :style none) :width condensed :family "neep"))))
+ (modeline-mousable-minor-mode ((t (:background "Gray10" :foreground "SteelBlue" :box (:line-width 1 :style none) :width condensed :family "neep"))))
+ (modeline-mousable ((t (:background "Gray10" :foreground "SteelBlue" :box (:line-width 1 :style none) :width condensed :family "neep"))))
+ (mouse ((t (:background "SteelBlue"))))
+ (primary-selection ((t (:background "blue3"))))
+ (region ((t (:background "blue3"))))
+ (scroll-bar ((t (:background "grey75"))))
+ (secondary-selection ((t (:background "SkyBlue4"))))
+ (speedbar-button-face ((t (:foreground "green3"))))
+ (speedbar-directory-face ((t (:foreground "light blue"))))
+ (speedbar-file-face ((t (:foreground "cyan"))))
+ (speedbar-highlight-face ((t (:background "sea green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray"))))
+ (zmacs-region ((t (:background "blue3")))))))
+
+(defun color-theme-katester ()
+ "Color theme by walterh@rocketmail.com, created 2001-12-12.
+A pastelly-mac like color-theme."
+ (interactive)
+ (color-theme-standard)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-install
+ '(color-theme-katester
+ ((background-color . "ivory")
+ (cursor-color . "slateblue")
+ (foreground-color . "black")
+ (mouse-color . "slateblue"))
+ (default ((t ((:background "ivory" :foreground "black")))))
+ (bold ((t (:bold t))))
+ (font-lock-string-face ((t (:foreground "maroon"))))
+ (font-lock-keyword-face ((t (:foreground "blue"))))
+ (font-lock-constant-face ((t (:foreground "darkblue"))))
+ (font-lock-type-face ((t (:foreground "black"))))
+ (font-lock-variable-name-face ((t (:foreground "black"))))
+ (font-lock-function-name-face ((t (:bold t :underline t))))
+ (font-lock-comment-face ((t (:background "seashell"))))
+ (highlight ((t (:background "lavender"))))
+ (italic ((t (:italic t))))
+ (modeline ((t (:background "moccasin" :foreground "black"))))
+ (region ((t (:background "lavender" ))))
+ (underline ((t (:underline t))))))))
+
+(defun color-theme-arjen ()
+ "Color theme by awiersma, created 2001-08-27."
+ (interactive)
+ (color-theme-install
+ '(color-theme-arjen
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "yellow")
+ (foreground-color . "White")
+ (mouse-color . "sienna1"))
+ ((buffers-tab-face . buffers-tab)
+ (cperl-here-face . font-lock-string-face)
+ (cperl-invalid-face quote underline)
+ (cperl-pod-face . font-lock-comment-face)
+ (cperl-pod-head-face . font-lock-variable-name-face)
+ (vc-mode-face . highlight))
+ (default ((t (:background "black" :foreground "white"))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:bold t))))
+ (border-glyph ((t (nil))))
+ (buffers-tab ((t (:background "black" :foreground "white"))))
+ (calendar-today-face ((t (:underline t))))
+ (cperl-array-face ((t (:foreground "darkseagreen"))))
+ (cperl-hash-face ((t (:foreground "darkseagreen"))))
+ (cperl-nonoverridable-face ((t (:foreground "SkyBlue"))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "light blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "pink"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "lime green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "light blue"))))
+ (diary-face ((t (:foreground "IndianRed"))))
+ (erc-action-face ((t (:bold t))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "sandybrown"))))
+ (erc-error-face ((t (:bold t :foreground "IndianRed"))))
+ (erc-input-face ((t (:foreground "Beige"))))
+ (erc-inverse-face ((t (:background "wheat" :foreground "darkslategrey"))))
+ (erc-notice-face ((t (:foreground "MediumAquamarine"))))
+ (erc-pal-face ((t (:foreground "pale green"))))
+ (erc-prompt-face ((t (:foreground "MediumAquamarine"))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "IndianRed"))))
+ (eshell-ls-backup-face ((t (:foreground "Grey"))))
+ (eshell-ls-clutter-face ((t (:foreground "DimGray"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "MediumSlateBlue"))))
+ (eshell-ls-executable-face ((t (:foreground "Coral"))))
+ (eshell-ls-missing-face ((t (:foreground "black"))))
+ (eshell-ls-picture-face ((t (:foreground "Violet"))))
+ (eshell-ls-product-face ((t (:foreground "sandybrown"))))
+ (eshell-ls-readonly-face ((t (:foreground "Aquamarine"))))
+ (eshell-ls-special-face ((t (:foreground "Gold"))))
+ (eshell-ls-symlink-face ((t (:foreground "White"))))
+ (eshell-ls-unreadable-face ((t (:foreground "DimGray"))))
+ (eshell-prompt-face ((t (:foreground "MediumAquamarine"))))
+ (fl-comment-face ((t (:foreground "pink"))))
+ (fl-doc-string-face ((t (:foreground "purple"))))
+ (fl-function-name-face ((t (:foreground "red"))))
+ (fl-keyword-face ((t (:foreground "cadetblue"))))
+ (fl-string-face ((t (:foreground "green"))))
+ (fl-type-face ((t (:foreground "yellow"))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "IndianRed"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-doc-string-face ((t (:foreground "DarkOrange"))))
+ (font-lock-function-name-face ((t (:foreground "YellowGreen"))))
+ (font-lock-keyword-face ((t (:foreground "PaleYellow"))))
+ (font-lock-preprocessor-face ((t (:foreground "Aquamarine"))))
+ (font-lock-reference-face ((t (:foreground "SlateBlue"))))
+ (font-lock-string-face ((t (:foreground "Orange"))))
+ (font-lock-type-face ((t (:foreground "Green"))))
+ (font-lock-variable-name-face ((t (:foreground "darkseagreen"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink"))))
+ (qt-classes-face ((t (:foreground "Red"))))
+ (gnus-cite-attribution-face ((t (nil))))
+ (gnus-cite-face-1 ((t (:bold nil :foreground "deep sky blue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:bold nil :foreground "cadetblue"))))
+ (gnus-cite-face-3 ((t (:bold nil :foreground "gold"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:bold nil :foreground "chocolate"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold nil))))
+ (gnus-emphasis-bold-italic ((t (:bold nil))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (nil))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold nil))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :bold nil))))
+ (gnus-emphasis-underline-italic ((t (:underline t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold nil :foreground "aquamarine1"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold nil :foreground "aquamarine2"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold nil :foreground "aquamarine3"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold nil :foreground "aquamarine4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold nil :foreground "PaleTurquoise"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold nil :foreground "turquoise"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold nil))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold nil))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold nil))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold nil))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold nil :foreground "DarkTurquoise"))))
+ (gnus-header-content-face ((t (:foreground "forest green"))))
+ (gnus-header-from-face ((t (:bold nil :foreground "spring green"))))
+ (gnus-header-name-face ((t (:foreground "deep sky blue"))))
+ (gnus-header-newsgroups-face ((t (:bold nil :foreground "purple"))))
+ (gnus-header-subject-face ((t (:bold nil :foreground "orange"))))
+ (gnus-signature-face ((t (:bold nil :foreground "khaki"))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold nil :foreground "SkyBlue"))))
+ (gnus-summary-high-read-face ((t (:bold nil :foreground "PaleGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold nil :foreground "pink"))))
+ (gnus-summary-high-unread-face ((t (:bold nil))))
+ (gnus-summary-low-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-low-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-low-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-low-unread-face ((t (nil))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:background "#D4D0C8" :foreground "black"))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (highline-face ((t (:background "SeaGreen"))))
+ (holiday-face ((t (:background "DimGray"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:underline t :bold t :foreground "DodgerBlue1"))))
+ (info-xref ((t (:underline t :foreground "DodgerBlue1"))))
+ (isearch ((t (:background "blue"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (nil))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68" :foreground "white"))))
+ (message-cited-text-face ((t (:bold t :foreground "green"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4"))))
+ (message-header-name-face ((t (:bold t :foreground "orange"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "violet"))))
+ (message-header-other-face ((t (:bold t :foreground "chocolate"))))
+ (message-header-subject-face ((t (:bold t :foreground "yellow"))))
+ (message-header-to-face ((t (:bold t :foreground "cadetblue"))))
+ (message-header-xheader-face ((t (:bold t :foreground "light blue"))))
+ (message-mml-face ((t (:bold t :foreground "Green3"))))
+ (message-separator-face ((t (:foreground "blue3"))))
+ (modeline ((t (:background "DarkRed" :foreground "white" :box (:line-width 1 :style released-button)))))
+ (modeline-buffer-id ((t (:background "DarkRed" :foreground "white"))))
+ (modeline-mousable ((t (:background "DarkRed" :foreground "white"))))
+ (modeline-mousable-minor-mode ((t (:background "DarkRed" :foreground "white"))))
+ (p4-depot-added-face ((t (:foreground "blue"))))
+ (p4-depot-deleted-face ((t (:foreground "red"))))
+ (p4-depot-unmapped-face ((t (:foreground "grey30"))))
+ (p4-diff-change-face ((t (:foreground "dark green"))))
+ (p4-diff-del-face ((t (:foreground "red"))))
+ (p4-diff-file-face ((t (:background "gray90"))))
+ (p4-diff-head-face ((t (:background "gray95"))))
+ (p4-diff-ins-face ((t (:foreground "blue"))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "blue"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "blue"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "darkslateblue"))))
+ (show-paren-match-face ((t (:background "Aquamarine" :foreground "SlateBlue"))))
+ (show-paren-mismatch-face ((t (:background "Red" :foreground "White"))))
+ (text-cursor ((t (:background "yellow" :foreground "black"))))
+ (toolbar ((t (nil))))
+ (underline ((nil (:underline nil))))
+ (vertical-divider ((t (nil))))
+ (widget ((t (nil))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray"))))
+ (woman-bold-face ((t (:bold t))))
+ (woman-italic-face ((t (:foreground "beige"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "snow" :foreground "blue")))))))
+
+(defun color-theme-tty-dark ()
+ "Color theme by Oivvio Polite, created 2002-02-01. Good for tty display."
+ (interactive)
+ (color-theme-install
+ '(color-theme-tty-dark
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "blue")
+ (cursor-color . "red")
+ (foreground-color . "white")
+ (mouse-color . "black"))
+ ((ispell-highlight-face . highlight)
+ (list-matching-lines-face . bold)
+ (tinyreplace-:face . highlight)
+ (view-highlight-face . highlight))
+ (default ((t (nil))))
+ (bold ((t (:underline t :background "black" :foreground "white"))))
+ (bold-italic ((t (:underline t :foreground "white"))))
+ (calendar-today-face ((t (:underline t))))
+ (diary-face ((t (:foreground "red"))))
+ (font-lock-builtin-face ((t (:foreground "blue"))))
+ (font-lock-comment-face ((t (:foreground "cyan"))))
+ (font-lock-constant-face ((t (:foreground "magenta"))))
+ (font-lock-function-name-face ((t (:foreground "cyan"))))
+ (font-lock-keyword-face ((t (:foreground "red"))))
+ (font-lock-string-face ((t (:foreground "green"))))
+ (font-lock-type-face ((t (:foreground "yellow"))))
+ (font-lock-variable-name-face ((t (:foreground "blue"))))
+ (font-lock-warning-face ((t (:bold t :foreground "magenta"))))
+ (highlight ((t (:background "blue" :foreground "yellow"))))
+ (holiday-face ((t (:background "cyan"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (italic ((t (:underline t :background "red"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "green"))))
+ (message-header-name-face ((t (:foreground "green"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow"))))
+ (message-header-other-face ((t (:foreground "#b00000"))))
+ (message-header-subject-face ((t (:foreground "green"))))
+ (message-header-to-face ((t (:bold t :foreground "green"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "green"))))
+ (message-separator-face ((t (:foreground "blue"))))
+
+ (modeline ((t (:background "white" :foreground "blue"))))
+ (modeline-buffer-id ((t (:background "white" :foreground "red"))))
+ (modeline-mousable ((t (:background "white" :foreground "magenta"))))
+ (modeline-mousable-minor-mode ((t (:background "white" :foreground "yellow"))))
+ (region ((t (:background "white" :foreground "black"))))
+ (zmacs-region ((t (:background "cyan" :foreground "black"))))
+ (secondary-selection ((t (:background "blue"))))
+ (show-paren-match-face ((t (:background "red"))))
+ (show-paren-mismatch-face ((t (:background "magenta" :foreground "white"))))
+ (underline ((t (:underline t)))))))
+
+(defun color-theme-aliceblue ()
+ "Color theme by Girish Bharadwaj, created 2002-03-27.
+Includes comint prompt, custom, font-lock, isearch,
+jde, senator, speedbar, and widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-aliceblue
+ ((background-color . "AliceBlue")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "DarkSlateGray4")
+ (mouse-color . "black"))
+ ((help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (semantic-which-function-use-color . t)
+ (senator-eldoc-use-color . t)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "AliceBlue" :foreground "DarkSlateGray4" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-courier new"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "dark blue"))))
+ (cursor ((t (:background "black"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "gray85"))))
+ (custom-comment-tag-face ((t (:foreground "blue4"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:bold t :foreground "blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "red" :weight bold :height 1.2))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "blue" :weight bold :height 1.2))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:italic t :foreground "Firebrick" :slant oblique))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "Blue" :weight extra-bold :family "outline-verdana"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "Purple" :weight semi-bold :family "outline-verdana"))))
+ (font-lock-preprocessor-face ((t (:foreground "CadetBlue"))))
+ (font-lock-reference-face ((t (:foreground "Orchid"))))
+ (font-lock-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-type-face ((t (:italic t :foreground "ForestGreen" :slant italic))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod" :width condensed))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red" :weight bold))))
+ (fringe ((t (:background "DarkSlateBlue"))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :background "grey90" :foreground "grey20" :box nil))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (isearch ((t (:background "magenta4" :foreground "lightskyblue1"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t :slant italic))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-db-active-breakpoint-face ((t (:background "red" :foreground "black"))))
+ (jde-db-requested-breakpoint-face ((t (:background "yellow" :foreground "black"))))
+ (jde-db-spec-breakpoint-face ((t (:background "green" :foreground "black"))))
+ (jde-java-font-lock-api-face ((t (:foreground "dark goldenrod"))))
+ (jde-java-font-lock-bold-face ((t (:bold t :weight bold))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "green4"))))
+ (jde-java-font-lock-italic-face ((t (:italic t :slant italic))))
+ (jde-java-font-lock-link-face ((t (:foreground "blue" :underline t :slant normal))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "Orchid"))))
+ (jde-java-font-lock-number-face ((t (:foreground "RosyBrown"))))
+ (jde-java-font-lock-operator-face ((t (:foreground "medium blue"))))
+ (jde-java-font-lock-package-face ((t (:foreground "blue3"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (menu ((t (nil))))
+ (modeline ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (modeline-buffer-id ((t (:background "grey75" :foreground "black"))))
+ (modeline-mousable ((t (:background "grey75" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "grey75" :foreground "black"))))
+ (mouse ((t (:background "black"))))
+ (primary-selection ((t (:background "lightgoldenrod2"))))
+ (region ((t (:background "lightgoldenrod2"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "yellow"))))
+ (semantic-dirty-token-face ((t (:background "lightyellow"))))
+ (semantic-unmatched-syntax-face ((t (:underline "red"))))
+ (senator-intangible-face ((t (:foreground "gray25"))))
+ (senator-momentary-highlight-face ((t (:background "gray70"))))
+ (senator-read-only-face ((t (:background "#CCBBBB"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (template-message-face ((t (:bold t :weight bold))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (zmacs-region ((t (:background "lightgoldenrod2")))))))
+
+(defun color-theme-black-on-gray ()
+ "Color theme by sbhojwani, created 2002-04-03.
+Includes ecb, font-lock, paren, semantic, and widget faces.
+Some of the font-lock faces are disabled, ie. they look just
+like the default face. This is for people that don't like
+the look of \"angry fruit salad\" when editing."
+ (interactive)
+ (color-theme-install
+ '(color-theme-black-on-gray
+ ((background-color . "white")
+ (background-mode . light)
+ (border-color . "blue")
+ (foreground-color . "black"))
+ ((buffers-tab-face . buffers-tab)
+ (ecb-directories-general-face . ecb-default-general-face)
+ (ecb-directory-face . ecb-default-highlight-face)
+ (ecb-history-face . ecb-default-highlight-face)
+ (ecb-history-general-face . ecb-default-general-face)
+ (ecb-method-face . ecb-default-highlight-face)
+ (ecb-methods-general-face . ecb-default-general-face)
+ (ecb-source-face . ecb-default-highlight-face)
+ (ecb-source-in-directories-buffer-face . ecb-source-in-directories-buffer-face)
+ (ecb-sources-general-face . ecb-default-general-face)
+ (ecb-token-header-face . ecb-token-header-face))
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t :size "10pt"))))
+ (bold-italic ((t (:italic t :bold t :size "10pt"))))
+ (border-glyph ((t (:size "11pt"))))
+ (buffers-tab ((t (:background "gray75"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (ecb-bucket-token-face ((t (:bold t :size "10pt"))))
+ (ecb-default-general-face ((t (nil))))
+ (ecb-default-highlight-face ((t (:background "cornflower blue" :foreground "yellow"))))
+ (ecb-directories-general-face ((t (nil))))
+ (ecb-directory-face ((t (:background "cornflower blue" :foreground "yellow"))))
+ (ecb-history-face ((t (:background "cornflower blue" :foreground "yellow"))))
+ (ecb-history-general-face ((t (nil))))
+ (ecb-method-face ((t (:background "cornflower blue" :foreground "yellow"))))
+ (ecb-methods-general-face ((t (nil))))
+ (ecb-source-face ((t (:background "cornflower blue" :foreground "yellow"))))
+ (ecb-source-in-directories-buffer-face ((t (:foreground "medium blue"))))
+ (ecb-sources-general-face ((t (nil))))
+ (ecb-token-header-face ((t (:background "SeaGreen1"))))
+ (ecb-type-token-class-face ((t (:bold t :size "10pt"))))
+ (ecb-type-token-enum-face ((t (:bold t :size "10pt"))))
+ (ecb-type-token-group-face ((t (:bold t :size "10pt" :foreground "dimgray"))))
+ (ecb-type-token-interface-face ((t (:bold t :size "10pt"))))
+ (ecb-type-token-struct-face ((t (:bold t :size "10pt"))))
+ (ecb-type-token-typedef-face ((t (:bold t :size "10pt"))))
+ (font-lock-builtin-face ((t (:foreground "red3"))))
+ (font-lock-constant-face ((t (:foreground "blue3"))))
+ (font-lock-comment-face ((t (:foreground "blue"))))
+ (font-lock-doc-face ((t (:foreground "green4"))))
+ (font-lock-doc-string-face ((t (:foreground "green4"))))
+ (font-lock-function-name-face ((t (nil))))
+ (font-lock-keyword-face ((t (nil))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (nil))))
+ (font-lock-type-face ((t (nil))))
+ (font-lock-variable-name-face ((t (nil))))
+ (font-lock-warning-face ((t (nil))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75"))))
+ (gui-element ((t (:size "8pt" :background "gray75"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (isearch ((t (:background "paleturquoise"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (:size "10pt"))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68"))))
+ (modeline ((t (:background "gray75"))))
+ (modeline-buffer-id ((t (:background "gray75" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "gray75" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "gray75" :foreground "green4"))))
+ (paren-blink-off ((t (:foreground "gray"))))
+ (paren-match ((t (:background "darkseagreen2"))))
+ (paren-mismatch ((t (nil))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "gray65"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (semantic-dirty-token-face ((t (nil))))
+ (semantic-unmatched-syntax-face ((t (nil))))
+ (text-cursor ((t (:background "red" :foreground "gray"))))
+ (toolbar ((t (:background "gray75"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (:background "gray75"))))
+ (widget ((t (:size "8pt" :background "gray75"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (nil))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "gray65")))))))
+
+(defun color-theme-dark-blue2 ()
+ "Color theme by Chris McMahan, created 2002-04-12.
+Includes antlr, bbdb, change-log, comint, cperl, custom cvs, diff,
+dired, display-time, ebrowse, ecb, ediff, erc, eshell, fl, font-lock,
+gnus, hi, highlight, html-helper, hyper-apropos, info, isearch, jde,
+message, mmm, paren, semantic, senator, sgml, smerge, speedbar,
+strokes, term, vhdl, viper, vm, widget, xref, xsl, xxml. Yes, it is
+a large theme."
+ (interactive)
+ (color-theme-install
+ '(color-theme-dark-blue2
+ ((background-color . "#233b5a")
+ (background-mode . dark)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "black")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (cursor-color . "Yellow")
+ (foreground-color . "#fff8dc")
+ (mouse-color . "Grey")
+ (top-toolbar-shadow-color . "#fffffbeeffff")
+ (viper-saved-cursor-color-in-replace-mode . "Red3"))
+ ((blank-space-face . blank-space-face)
+ (blank-tab-face . blank-tab-face)
+ (cperl-invalid-face . underline)
+ (ecb-directories-general-face . ecb-directories-general-face)
+ (ecb-directory-face . ecb-directory-face)
+ (ecb-history-face . ecb-history-face)
+ (ecb-history-general-face . ecb-history-general-face)
+ (ecb-method-face . ecb-method-face)
+ (ecb-methods-general-face . ecb-methods-general-face)
+ (ecb-source-face . ecb-source-face)
+ (ecb-source-in-directories-buffer-face . ecb-sources-face)
+ (ecb-sources-general-face . ecb-sources-general-face)
+ (ecb-token-header-face . ecb-token-header-face)
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-cite-attribution-face . gnus-cite-attribution-face)
+ (gnus-signature-face . gnus-signature-face)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (help-highlight-face . underline)
+ (highline-face . highline-face)
+ (highline-vertical-face . highline-vertical-face)
+ (list-matching-lines-face . bold)
+ (ps-zebra-color . 0.95)
+ (senator-eldoc-use-color . t)
+ (sgml-set-face . t)
+ (tags-tag-face . default)
+ (view-highlight-face . highlight)
+ (vm-highlight-url-face . bold-italic)
+ (vm-highlighted-header-face . bold)
+ (vm-mime-button-face . gui-button-face)
+ (vm-summary-highlight-face . bold)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "#233b5a" :foreground "#fff8dc" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-lucida console"))))
+ (Info-title-1-face ((t (:bold t :weight bold :height 1.728 :family "helv"))))
+ (Info-title-2-face ((t (:bold t :weight bold :height 1.44 :family "helv"))))
+ (Info-title-3-face ((t (:bold t :weight bold :height 1.2 :family "helv"))))
+ (Info-title-4-face ((t (:bold t :weight bold :family "helv"))))
+ (antlr-font-lock-keyword-face ((t (:bold t :foreground "Gray85" :weight bold))))
+ (antlr-font-lock-literal-face ((t (:bold t :foreground "Gray85" :weight bold))))
+ (antlr-font-lock-ruledef-face ((t (:bold t :foreground "Gray85" :weight bold))))
+ (antlr-font-lock-ruleref-face ((t (:foreground "Gray85"))))
+ (antlr-font-lock-tokendef-face ((t (:bold t :foreground "Gray85" :weight bold))))
+ (antlr-font-lock-tokenref-face ((t (:foreground "Gray85"))))
+ (bbdb-company ((t (:italic t :slant italic))))
+ (bbdb-field-name ((t (:bold t :weight bold))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (:underline t))))
+ (bg:erc-color-face0 ((t (:background "White"))))
+ (bg:erc-color-face1 ((t (:background "black"))))
+ (bg:erc-color-face10 ((t (:background "lightblue1"))))
+ (bg:erc-color-face11 ((t (:background "cyan"))))
+ (bg:erc-color-face12 ((t (:background "blue"))))
+ (bg:erc-color-face13 ((t (:background "deeppink"))))
+ (bg:erc-color-face14 ((t (:background "gray50"))))
+ (bg:erc-color-face15 ((t (:background "gray90"))))
+ (bg:erc-color-face2 ((t (:background "blue4"))))
+ (bg:erc-color-face3 ((t (:background "green4"))))
+ (bg:erc-color-face4 ((t (:background "red"))))
+ (bg:erc-color-face5 ((t (:background "brown"))))
+ (bg:erc-color-face6 ((t (:background "purple"))))
+ (bg:erc-color-face7 ((t (:background "orange"))))
+ (bg:erc-color-face8 ((t (:background "yellow"))))
+ (bg:erc-color-face9 ((t (:background "green"))))
+ (blank-space-face ((t (:background "LightGray"))))
+ (blank-tab-face ((t (:background "Wheat"))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t :foreground "cyan" :weight bold))))
+ (bold-italic ((t (:italic t :bold t :foreground "cyan2" :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (border-glyph ((t (nil))))
+ (buffers-tab ((t (:background "gray30" :foreground "LightSkyBlue"))))
+ (calendar-today-face ((t (:underline t))))
+ (change-log-acknowledgement-face ((t (:foreground "firebrick"))))
+ (change-log-conditionals-face ((t (:background "sienna" :foreground "khaki"))))
+ (change-log-date-face ((t (:foreground "gold"))))
+ (change-log-email-face ((t (:foreground "khaki" :underline t))))
+ (change-log-file-face ((t (:bold t :foreground "lemon chiffon" :weight bold))))
+ (change-log-function-face ((t (:background "sienna" :foreground "khaki"))))
+ (change-log-list-face ((t (:foreground "wheat"))))
+ (change-log-name-face ((t (:bold t :foreground "light goldenrod" :weight bold))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (comint-input-face ((t (:foreground "deepskyblue"))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue" :weight bold))))
+ (cperl-hash-face ((t (:italic t :bold t :background "lightyellow2" :foreground "Red" :slant italic :weight bold))))
+ (cperl-invalid-face ((t (:foreground "white"))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (cursor ((t (:background "Yellow"))))
+ (custom-button-face ((t (:bold t :weight bold))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "gray30"))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:foreground "white"))))
+ (custom-comment-tag-face ((t (:foreground "white"))))
+ (custom-documentation-face ((t (:foreground "light blue"))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:bold t :foreground "gray85" :underline t :weight bold))))
+ (custom-group-tag-face-1 ((t (:foreground "gray85" :underline t))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "gray30" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "gray85"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :foreground "gray85" :underline t :weight bold))))
+ (cvs-filename-face ((t (:foreground "white"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:foreground "green"))))
+ (cvs-marked-face ((t (:bold t :foreground "green3" :weight bold))))
+ (cvs-msg-face ((t (:foreground "gray85"))))
+ (cvs-need-action-face ((t (:foreground "yellow"))))
+ (cvs-unknown-face ((t (:foreground "grey"))))
+ (cyan ((t (:foreground "cyan"))))
+ (diary-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (:foreground "grey50"))))
+ (diff-file-header-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-function-face ((t (:foreground "grey50"))))
+ (diff-header-face ((t (:foreground "lemon chiffon"))))
+ (diff-hunk-header-face ((t (:background "grey85"))))
+ (diff-index-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-nonexistent-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-removed-face ((t (nil))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t :weight bold))))
+ (dired-face-executable ((t (:foreground "gray85"))))
+ (dired-face-flagged ((t (:background "LightSlateGray"))))
+ (dired-face-header ((t (:background "grey75" :foreground "gray30"))))
+ (dired-face-marked ((t (:background "PaleVioletRed"))))
+ (dired-face-permissions ((t (:background "grey75" :foreground "gray30"))))
+ (dired-face-setuid ((t (:foreground "gray85"))))
+ (dired-face-socket ((t (:foreground "gray85"))))
+ (dired-face-symlink ((t (:foreground "cyan"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "gray85"))))
+ (ebrowse-default-face ((t (nil))))
+ (ebrowse-file-name-face ((t (:italic t :slant italic))))
+ (ebrowse-member-attribute-face ((t (:foreground "red"))))
+ (ebrowse-member-class-face ((t (:foreground "Gray85"))))
+ (ebrowse-progress-face ((t (:background "blue"))))
+ (ebrowse-root-class-face ((t (:bold t :foreground "Gray85" :weight bold))))
+ (ebrowse-tree-mark-face ((t (:foreground "Gray85"))))
+ (ecb-bucket-token-face ((t (:bold t :weight bold))))
+ (ecb-default-general-face ((t (:height 1.0))))
+ (ecb-default-highlight-face ((t (:background "magenta" :height 1.0))))
+ (ecb-directories-general-face ((t (:height 0.9))))
+ (ecb-directory-face ((t (:background "Cyan4"))))
+ (ecb-history-face ((t (:background "Cyan4"))))
+ (ecb-history-general-face ((t (:height 0.9))))
+ (ecb-method-face ((t (:background "Cyan4" :slant normal :weight normal))))
+ (ecb-methods-general-face ((t (:slant normal))))
+ (ecb-source-face ((t (:background "Cyan4"))))
+ (ecb-source-in-directories-buffer-face ((t (:foreground "LightBlue1"))))
+ (ecb-sources-face ((t (:foreground "LightBlue1"))))
+ (ecb-sources-general-face ((t (:height 0.9))))
+ (ecb-token-header-face ((t (:background "Steelblue4"))))
+ (ecb-type-token-class-face ((t (:bold t :weight bold))))
+ (ecb-type-token-enum-face ((t (:bold t :weight bold))))
+ (ecb-type-token-group-face ((t (:bold t :foreground "dim gray" :weight bold))))
+ (ecb-type-token-interface-face ((t (:bold t :weight bold))))
+ (ecb-type-token-struct-face ((t (:bold t :weight bold))))
+ (ecb-type-token-typedef-face ((t (:bold t :weight bold))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Gray30"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Gray30"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Gray30"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Gray30"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Gray30"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Gray30"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Gray30"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Gray30"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (erc-action-face ((t (:bold t :weight bold))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-dangerous-host-face ((t (:foreground "red"))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "pale green"))))
+ (erc-error-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (erc-fool-face ((t (:foreground "Gray85"))))
+ (erc-highlight-face ((t (:bold t :foreground "pale green" :weight bold))))
+ (erc-input-face ((t (:foreground "light blue"))))
+ (erc-inverse-face ((t (:background "Black" :foreground "White"))))
+ (erc-keyword-face ((t (:bold t :foreground "pale green" :weight bold))))
+ (erc-notice-face ((t (:foreground "light salmon"))))
+ (erc-pal-face ((t (:foreground "pale green"))))
+ (erc-prompt-face ((t (:bold t :foreground "light blue" :weight bold))))
+ (erc-timestamp-face ((t (:bold t :foreground "green" :weight bold))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :weight bold))))
+ (eshell-ls-backup-face ((t (:foreground "gray85"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Cyan" :weight bold))))
+ (eshell-ls-executable-face ((t (:bold t :weight bold))))
+ (eshell-ls-missing-face ((t (:bold t :weight bold))))
+ (eshell-ls-picture-face ((t (:foreground "gray85"))))
+ (eshell-ls-product-face ((t (:foreground "gray85"))))
+ (eshell-ls-readonly-face ((t (:foreground "gray70"))))
+ (eshell-ls-special-face ((t (:bold t :weight bold))))
+ (eshell-ls-symlink-face ((t (:bold t :weight bold))))
+ (eshell-ls-text-face ((t (:foreground "gray85"))))
+ (eshell-ls-todo-face ((t (:bold t :weight bold))))
+ (eshell-ls-unreadable-face ((t (:foreground "gray85"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Yellow" :weight bold))))
+ (eshell-test-failed-face ((t (:bold t :weight bold))))
+ (eshell-test-ok-face ((t (:bold t :weight bold))))
+ (excerpt ((t (:italic t :slant italic))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (fg:black ((t (:foreground "black"))))
+ (fg:erc-color-face0 ((t (:foreground "White"))))
+ (fg:erc-color-face1 ((t (:foreground "black"))))
+ (fg:erc-color-face10 ((t (:foreground "lightblue1"))))
+ (fg:erc-color-face11 ((t (:foreground "cyan"))))
+ (fg:erc-color-face12 ((t (:foreground "blue"))))
+ (fg:erc-color-face13 ((t (:foreground "deeppink"))))
+ (fg:erc-color-face14 ((t (:foreground "gray50"))))
+ (fg:erc-color-face15 ((t (:foreground "gray90"))))
+ (fg:erc-color-face2 ((t (:foreground "blue4"))))
+ (fg:erc-color-face3 ((t (:foreground "green4"))))
+ (fg:erc-color-face4 ((t (:foreground "red"))))
+ (fg:erc-color-face5 ((t (:foreground "brown"))))
+ (fg:erc-color-face6 ((t (:foreground "purple"))))
+ (fg:erc-color-face7 ((t (:foreground "orange"))))
+ (fg:erc-color-face8 ((t (:foreground "yellow"))))
+ (fg:erc-color-face9 ((t (:foreground "green"))))
+ (fixed ((t (:bold t :weight bold))))
+ (fixed-pitch ((t (:family "outline-lucida console"))))
+ (fl-comment-face ((t (:foreground "gray85"))))
+ (fl-function-name-face ((t (:foreground "green"))))
+ (fl-keyword-face ((t (:foreground "LightGreen"))))
+ (fl-string-face ((t (:foreground "light coral"))))
+ (fl-type-face ((t (:foreground "cyan"))))
+ (flyspell-duplicate-face ((t (:bold t :foreground "Gold3" :underline t :weight bold))))
+ (flyspell-incorrect-face ((t (:bold t :foreground "OrangeRed" :underline t :weight bold))))
+ (font-latex-bold-face ((t (nil))))
+ (font-latex-italic-face ((t (nil))))
+ (font-latex-math-face ((t (nil))))
+ (font-latex-sedate-face ((t (:foreground "Gray85"))))
+ (font-latex-string-face ((t (:foreground "orange"))))
+ (font-latex-warning-face ((t (:foreground "gold"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "LightSteelBlue" :weight bold))))
+ (font-lock-comment-face ((t (:italic t :foreground "medium aquamarine" :slant italic))))
+ (font-lock-constant-face ((t (:bold t :foreground "Aquamarine" :weight bold))))
+ (font-lock-doc-face ((t (:bold t :weight bold))))
+ (font-lock-doc-string-face ((t (:bold t :foreground "aquamarine" :weight bold))))
+ (font-lock-exit-face ((t (:foreground "green"))))
+ (font-lock-function-name-face ((t (:italic t :bold t :foreground "LightSkyBlue" :slant italic :weight bold))))
+ (font-lock-keyword-face ((t (:bold t :foreground "Cyan" :weight bold))))
+ (font-lock-preprocessor-face ((t (:foreground "Gray85"))))
+ (font-lock-reference-face ((t (:foreground "cyan"))))
+ (font-lock-string-face ((t (:italic t :foreground "aquamarine" :slant italic))))
+ (font-lock-type-face ((t (:bold t :foreground "PaleGreen" :weight bold))))
+ (font-lock-variable-name-face ((t (:italic t :bold t :foreground "LightGoldenrod" :slant italic :weight bold))))
+ (font-lock-warning-face ((t (:bold t :foreground "Salmon" :weight bold))))
+ (fringe ((t (:background "#3c5473"))))
+ (gnus-cite-attribution-face ((t (:italic t :bold t :foreground "beige" :underline t :slant italic :weight bold))))
+ (gnus-cite-face-1 ((t (:foreground "gold"))))
+ (gnus-cite-face-10 ((t (:foreground "coral"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "wheat"))))
+ (gnus-cite-face-3 ((t (:foreground "light pink"))))
+ (gnus-cite-face-4 ((t (:foreground "khaki"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :foreground "light gray" :weight bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :foreground "cyan" :slant italic :weight bold))))
+ (gnus-emphasis-highlight-words ((t (:background "gray30" :foreground "gold"))))
+ (gnus-emphasis-italic ((t (:italic t :foreground "cyan" :slant italic))))
+ (gnus-emphasis-underline ((t (:foreground "white" :underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :foreground "white" :underline t :weight bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :foreground "white" :underline t :slant italic :weight bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :foreground "white" :underline t :slant italic))))
+ (gnus-filterhist-face-1 ((t (nil))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "Magenta"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "Magenta" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "Cyan"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "Cyan" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "Wheat"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "Gray85" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (:foreground "wheat"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "Wheat" :weight bold))))
+ (gnus-group-news-4-empty-face ((t (:foreground "Aquamarine"))))
+ (gnus-group-news-4-face ((t (:bold t :weight bold))))
+ (gnus-group-news-5-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-5-face ((t (:bold t :weight bold))))
+ (gnus-group-news-6-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-6-face ((t (:bold t :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "MediumAquamarine" :weight bold))))
+ (gnus-header-content-face ((t (:italic t :foreground "Wheat" :slant italic))))
+ (gnus-header-from-face ((t (:bold t :foreground "light yellow" :weight bold))))
+ (gnus-header-name-face ((t (:bold t :foreground "Wheat" :weight bold))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "gold" :slant italic :weight bold))))
+ (gnus-header-subject-face ((t (:bold t :foreground "Gold" :weight bold))))
+ (gnus-picons-face ((t (:background "white" :foreground "gray30"))))
+ (gnus-picons-xbm-face ((t (:background "white" :foreground "gray30"))))
+ (gnus-signature-face ((t (:italic t :foreground "white" :slant italic))))
+ (gnus-splash ((t (:foreground "Brown"))))
+ (gnus-splash-face ((t (:foreground "orange"))))
+ (gnus-summary-cancelled-face ((t (:background "gray30" :foreground "orange"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "coral" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:italic t :bold t :foreground "gold" :slant italic :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue" :slant italic))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "gray85" :slant italic))))
+ (gnus-summary-low-ticked-face ((t (:italic t :bold t :foreground "coral" :slant italic :weight bold))))
+ (gnus-summary-low-unread-face ((t (:italic t :foreground "white" :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "gray70"))))
+ (gnus-summary-normal-ticked-face ((t (:bold t :foreground "pink" :weight bold))))
+ (gnus-summary-normal-unread-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (gnus-summary-selected-face ((t (:foreground "white" :underline t))))
+ (gnus-x-face ((t (:background "white" :foreground "gray30"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "gray30"))))
+ (gui-element ((t (:background "Gray80"))))
+ (header-line ((t (:background "grey20" :foreground "grey90"))))
+ (hi-black-b ((t (:bold t :weight bold))))
+ (hi-black-hb ((t (:bold t :weight bold :height 1.67 :family "helv"))))
+ (hi-blue ((t (:background "light blue"))))
+ (hi-blue-b ((t (:bold t :foreground "blue" :weight bold))))
+ (hi-green ((t (:background "green"))))
+ (hi-green-b ((t (:bold t :foreground "green" :weight bold))))
+ (hi-pink ((t (:background "pink"))))
+ (hi-red-b ((t (:bold t :foreground "red" :weight bold))))
+ (hi-yellow ((t (:background "yellow"))))
+ (highlight ((t (:background "SkyBlue3"))))
+ (highlight-changes-delete-face ((t (:foreground "gray85" :underline t))))
+ (highlight-changes-face ((t (:foreground "gray85"))))
+ (highline-face ((t (:background "#3c5473"))))
+ (highline-vertical-face ((t (:background "lightcyan"))))
+ (holiday-face ((t (:background "pink" :foreground "gray30"))))
+ (html-helper-bold-face ((t (:bold t :weight bold))))
+ (html-helper-bold-italic-face ((t (nil))))
+ (html-helper-builtin-face ((t (:foreground "gray85" :underline t))))
+ (html-helper-italic-face ((t (:bold t :foreground "yellow" :weight bold))))
+ (html-helper-underline-face ((t (:underline t))))
+ (html-tag-face ((t (:bold t :weight bold))))
+ (hyper-apropos-documentation ((t (:foreground "white"))))
+ (hyper-apropos-heading ((t (:bold t :weight bold))))
+ (hyper-apropos-hyperlink ((t (:foreground "sky blue"))))
+ (hyper-apropos-major-heading ((t (:bold t :weight bold))))
+ (hyper-apropos-section-heading ((t (:bold t :weight bold))))
+ (hyper-apropos-warning ((t (:bold t :foreground "gray85" :weight bold))))
+ (ibuffer-marked-face ((t (:foreground "gray85"))))
+ (idlwave-help-link-face ((t (:foreground "Blue"))))
+ (idlwave-shell-bp-face ((t (:background "Pink" :foreground "Black"))))
+ (info-header-node ((t (:italic t :bold t :foreground "brown" :slant italic :weight bold))))
+ (info-header-xref ((t (:bold t :foreground "magenta4" :weight bold))))
+ (info-menu-5 ((t (:underline t))))
+ (info-menu-6 ((t (nil))))
+ (info-menu-header ((t (:bold t :weight bold :family "helv"))))
+ (info-node ((t (:italic t :bold t :slant italic :weight bold))))
+ (info-xref ((t (:bold t :weight bold))))
+ (isearch ((t (:background "LightSeaGreen"))))
+ (isearch-lazy-highlight-face ((t (:background "cyan4"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-bug-breakpoint-marker ((t (:background "yellow" :foreground "red"))))
+ (jde-java-font-lock-api-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-bold-face ((t (:bold t :weight bold))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-italic-face ((t (:italic t :slant italic))))
+ (jde-java-font-lock-link-face ((t (:foreground "cyan3" :underline t))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "RosyBrown"))))
+ (jde-java-font-lock-operator-face ((t (:foreground "cyan3"))))
+ (jde-java-font-lock-package-face ((t (:foreground "LightBlue"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (lazy-highlight-face ((t (:bold t :foreground "yellow" :weight bold))))
+ (left-margin ((t (nil))))
+ (linemenu-face ((t (:background "gray30"))))
+ (list-mode-item-selected ((t (:background "gray68"))))
+ (log-view-file-face ((t (:bold t :background "grey70" :weight bold))))
+ (log-view-message-face ((t (:background "grey85"))))
+ (magenta ((t (:foreground "gray85"))))
+ (makefile-space-face ((t (:background "hotpink" :foreground "white"))))
+ (man-bold ((t (:bold t :weight bold))))
+ (man-heading ((t (:bold t :weight bold))))
+ (man-italic ((t (:foreground "yellow"))))
+ (man-xref ((t (:underline t))))
+ (menu ((t (:background "wheat" :foreground "gray30"))))
+ (message-cited-text ((t (:foreground "orange"))))
+ (message-cited-text-face ((t (:foreground "medium aquamarine"))))
+ (message-header-cc-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (message-header-contents ((t (:foreground "white"))))
+ (message-header-name-face ((t (:foreground "gray85"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "gray85"))))
+ (message-header-subject-face ((t (:bold t :foreground "green3" :weight bold))))
+ (message-header-to-face ((t (:bold t :foreground "green2" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-headers ((t (:bold t :foreground "orange" :weight bold))))
+ (message-highlighted-header-contents ((t (:bold t :weight bold))))
+ (message-mml-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (message-separator-face ((t (:foreground "gray85"))))
+ (message-url ((t (:bold t :foreground "pink" :weight bold))))
+ (mmm-default-submode-face ((t (:background "#c0c0c5"))))
+ (mmm-face ((t (:background "black" :foreground "green"))))
+ (modeline ((t (:background "#3c5473" :foreground "lightgray" :box (:line-width -1 :style released-button :family "helv")))))
+ (modeline-buffer-id ((t (:background "white" :foreground "DeepSkyBlue3" :slant normal :weight normal :width normal :family "outline-verdana"))))
+ (modeline-mousable ((t (:background "white" :foreground "DeepSkyBlue3"))))
+ (modeline-mousable-minor-mode ((t (:background "white" :foreground "DeepSkyBlue3"))))
+ (mouse ((t (:background "Grey"))))
+ (my-summary-highlight-face ((t (:background "PaleTurquoise4" :foreground "White"))))
+ (my-url-face ((t (:foreground "LightBlue"))))
+ (nil ((t (nil))))
+ (paren-blink-off ((t (:foreground "gray80"))))
+ (paren-face-match ((t (:background "turquoise"))))
+ (paren-face-mismatch ((t (:background "purple" :foreground "white"))))
+ (paren-face-no-match ((t (:background "yellow" :foreground "gray30"))))
+ (paren-match ((t (:background "darkseagreen2"))))
+ (paren-mismatch ((t (:background "RosyBrown" :foreground "gray30"))))
+ (paren-mismatch-face ((t (:bold t :background "white" :foreground "red" :weight bold))))
+ (paren-no-match-face ((t (:bold t :background "white" :foreground "red" :weight bold))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray40"))))
+ (reb-match-0 ((t (:background "lightblue"))))
+ (reb-match-1 ((t (:background "aquamarine"))))
+ (reb-match-2 ((t (:background "springgreen"))))
+ (reb-match-3 ((t (:background "yellow"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "Cyan4"))))
+ (right-margin ((t (nil))))
+ (scroll-bar ((t (:background "grey75"))))
+ (secondary-selection ((t (:background "gray60"))))
+ (semantic-dirty-token-face ((t (:background "gray10"))))
+ (semantic-intangible-face ((t (:foreground "gray25"))))
+ (semantic-read-only-face ((t (:background "gray25"))))
+ (semantic-unmatched-syntax-face ((t (:underline "red"))))
+ (senator-intangible-face ((t (:foreground "gray75"))))
+ (senator-momentary-highlight-face ((t (:background "gray70"))))
+ (senator-read-only-face ((t (:background "#664444"))))
+ (sgml-comment-face ((t (:foreground "dark turquoise"))))
+ (sgml-doctype-face ((t (:foreground "turquoise"))))
+ (sgml-end-tag-face ((t (:foreground "aquamarine"))))
+ (sgml-entity-face ((t (:foreground "gray85"))))
+ (sgml-ignored-face ((t (:background "gray60" :foreground "gray40"))))
+ (sgml-ms-end-face ((t (:foreground "green"))))
+ (sgml-ms-start-face ((t (:foreground "yellow"))))
+ (sgml-pi-face ((t (:foreground "lime green"))))
+ (sgml-sgml-face ((t (:foreground "brown"))))
+ (sgml-short-ref-face ((t (:foreground "deep sky blue"))))
+ (sgml-start-tag-face ((t (:foreground "aquamarine"))))
+ (sh-heredoc-face ((t (:foreground "tan"))))
+ (shell-option-face ((t (:foreground "gray85"))))
+ (shell-output-2-face ((t (:foreground "gray85"))))
+ (shell-output-3-face ((t (:foreground "gray85"))))
+ (shell-output-face ((t (:bold t :weight bold))))
+ (shell-prompt-face ((t (:foreground "yellow"))))
+ (show-paren-match-face ((t (:bold t :background "turquoise" :weight bold))))
+ (show-paren-mismatch-face ((t (:bold t :background "RosyBrown" :foreground "white" :weight bold))))
+ (show-tabs-space-face ((t (:foreground "yellow"))))
+ (show-tabs-tab-face ((t (:foreground "red"))))
+ (smerge-base-face ((t (:foreground "red"))))
+ (smerge-markers-face ((t (:background "grey85"))))
+ (smerge-mine-face ((t (:foreground "Gray85"))))
+ (smerge-other-face ((t (:foreground "darkgreen"))))
+ (speedbar-button-face ((t (:bold t :weight bold))))
+ (speedbar-directory-face ((t (:bold t :weight bold))))
+ (speedbar-file-face ((t (:bold t :weight bold))))
+ (speedbar-highlight-face ((t (:background "sea green"))))
+ (speedbar-selected-face ((t (:underline t))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (strokes-char-face ((t (:background "lightgray"))))
+ (swbuff-current-buffer-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (template-message-face ((t (:bold t :weight bold))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-bold ((t (:bold t :weight bold))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-default ((t (:background "gray80" :foreground "gray30" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-lucida console"))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-green ((t (:foreground "green"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-red ((t (:foreground "red"))))
+ (term-redbg ((t (:background "red"))))
+ (term-underline ((t (:underline t))))
+ (term-white ((t (:foreground "white"))))
+ (term-whitebg ((t (:background "white"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (tex-math-face ((t (:foreground "RosyBrown"))))
+ (texinfo-heading-face ((t (:foreground "Blue"))))
+ (text-cursor ((t (:background "Red3" :foreground "gray80"))))
+ (tool-bar ((t (:background "grey75" :foreground "black"))))
+ (toolbar ((t (:background "Gray80"))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (vc-annotate-face-0046FF ((t (:background "black" :foreground "wheat"))))
+ (vcursor ((t (:background "cyan" :foreground "blue" :underline t))))
+ (vertical-divider ((t (:background "Gray80"))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "gray85"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "gray85"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "gray85"))))
+ (vhdl-font-lock-function-face ((t (:foreground "gray85"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "gray85"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:foreground "gray85" :underline t))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "gray85"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:foreground "gray85" :underline t))))
+ (vhdl-speedbar-entity-face ((t (:foreground "gray85"))))
+ (vhdl-speedbar-entity-selected-face ((t (:foreground "gray85" :underline t))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "gray85"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:foreground "gray85" :underline t))))
+ (vhdl-speedbar-package-face ((t (:foreground "gray85"))))
+ (vhdl-speedbar-package-selected-face ((t (:foreground "gray85" :underline t))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (vm-header-content-face ((t (:italic t :foreground "wheat" :slant italic))))
+ (vm-header-from-face ((t (:italic t :foreground "wheat" :slant italic))))
+ (vm-header-name-face ((t (:foreground "cyan"))))
+ (vm-header-subject-face ((t (:foreground "cyan"))))
+ (vm-header-to-face ((t (:italic t :foreground "cyan" :slant italic))))
+ (vm-message-cited-face ((t (:foreground "Gray80"))))
+ (vm-monochrome-image ((t (:background "white" :foreground "gray30"))))
+ (vm-summary-face-1 ((t (:foreground "MediumAquamarine"))))
+ (vm-summary-face-2 ((t (:foreground "MediumAquamarine"))))
+ (vm-summary-face-3 ((t (:foreground "MediumAquamarine"))))
+ (vm-summary-face-4 ((t (:foreground "MediumAquamarine"))))
+ (vm-summary-highlight-face ((t (:foreground "White"))))
+ (vm-xface ((t (:background "white" :foreground "gray30"))))
+ (vmpc-pre-sig-face ((t (:foreground "gray85"))))
+ (vmpc-sig-face ((t (:foreground "gray85"))))
+ (vvb-face ((t (:background "pink" :foreground "gray30"))))
+ (w3m-anchor-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (w3m-arrived-anchor-face ((t (:bold t :foreground "gray85" :weight bold))))
+ (w3m-header-line-location-content-face ((t (:background "dark olive green" :foreground "wheat"))))
+ (w3m-header-line-location-title-face ((t (:background "dark olive green" :foreground "beige"))))
+ (white ((t (:foreground "white"))))
+ (widget ((t (nil))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "gray85"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85" :foreground "gray30"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray" :foreground "white"))))
+ (woman-addition-face ((t (:foreground "orange"))))
+ (woman-bold-face ((t (:bold t :weight bold))))
+ (woman-italic-face ((t (:foreground "beige"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))
+ (x-face ((t (:background "white" :foreground "gray30"))))
+ (xrdb-option-name-face ((t (:foreground "gray85"))))
+ (xref-keyword-face ((t (:foreground "gray85"))))
+ (xref-list-default-face ((t (nil))))
+ (xref-list-pilot-face ((t (:foreground "gray85"))))
+ (xref-list-symbol-face ((t (:foreground "navy"))))
+ (xsl-fo-alternate-face ((t (:foreground "Yellow"))))
+ (xsl-fo-main-face ((t (:foreground "PaleGreen"))))
+ (xsl-other-element-face ((t (:foreground "Coral"))))
+ (xsl-xslt-alternate-face ((t (:foreground "LightGray"))))
+ (xsl-xslt-main-face ((t (:foreground "Wheat"))))
+ (xxml-emph-1-face ((t (:background "lightyellow"))))
+ (xxml-emph-2-face ((t (:background "lightyellow"))))
+ (xxml-header-1-face ((t (:background "seashell1" :foreground "MediumAquamarine"))))
+ (xxml-header-2-face ((t (:background "seashell1" :foreground "SkyBlue"))))
+ (xxml-header-3-face ((t (:background "seashell1"))))
+ (xxml-header-4-face ((t (:background "seashell1"))))
+ (xxml-interaction-face ((t (:background "lightcyan"))))
+ (xxml-rug-face ((t (:background "cyan"))))
+ (xxml-sparkle-face ((t (:background "yellow"))))
+ (xxml-unbreakable-space-face ((t (:foreground "grey" :underline t))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "Cyan4")))))))
+
+(defun color-theme-blue-mood ()
+ "Color theme by Nelson Loyola, created 2002-04-15.
+Includes cperl, custom, font-lock, p4, speedbar, widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-blue-mood
+ ((background-color . "DodgerBlue4")
+ (background-mode . dark)
+ (background-toolbar-color . "#bfbfbfbfbfbf")
+ (border-color . "Blue")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#6c6c68686868")
+ (cursor-color . "DarkGoldenrod1")
+ (foreground-color . "white smoke")
+ (mouse-color . "black")
+ (top-toolbar-shadow-color . "#e5e5e0e0e1e1"))
+ ((vc-annotate-very-old-color . "#0046FF"))
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (nil))))
+ (border-glyph ((t (nil))))
+ (cmode-bracket-face ((t (:bold t))))
+ (cperl-array-face ((t (:bold t :foreground "wheat"))))
+ (cperl-hash-face ((t (:bold t :foreground "chartreuse"))))
+ (custom-button-face ((t (nil))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:bold t :foreground "cyan"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (ff-paths-non-existant-file-face ((t (:bold t :foreground "NavyBlue"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "wheat"))))
+ (font-lock-comment-face ((t (:bold t :foreground "gray72"))))
+ (font-lock-constant-face ((t (:bold t :foreground "cyan3"))))
+ (font-lock-doc-string-face ((t (:foreground "#00C000"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "chartreuse"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "gold1"))))
+ (font-lock-other-emphasized-face ((t (:bold t :foreground "gold1"))))
+ (font-lock-other-type-face ((t (:bold t :foreground "gold1"))))
+ (font-lock-preprocessor-face ((t (:foreground "plum"))))
+ (font-lock-reference-face ((t (:bold t :foreground "orangered"))))
+ (font-lock-string-face ((t (:foreground "tomato"))))
+ (font-lock-type-face ((t (:bold t :foreground "gold1"))))
+ (font-lock-variable-name-face ((t (:foreground "light yellow"))))
+ (font-lock-warning-face ((t (:foreground "tomato"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:size "nil" :background "#e7e3d6" :foreground" #000000"))))
+ (highlight ((t (:background "red" :foreground "yellow"))))
+ (isearch ((t (:bold t :background "pale turquoise" :foreground "blue"))))
+ (italic ((t (nil))))
+ (lazy-highlight-face ((t (:bold t :foreground "dark magenta"))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:bold t :background "gray68" :foreground "yellow"))))
+ (modeline ((t (:background "goldenrod" :foreground "darkblue"))))
+ (modeline-buffer-id ((t (:background "goldenrod" :foreground "darkblue"))))
+ (modeline-mousable ((t (:background "goldenrod" :foreground "darkblue"))))
+ (modeline-mousable-minor-mode ((t (:background "goldenrod" :foreground "darkblue"))))
+ (my-tab-face ((t (:background "SlateBlue1"))))
+ (p4-depot-added-face ((t (:foreground "steelblue1"))))
+ (p4-depot-deleted-face ((t (:foreground "red"))))
+ (p4-depot-unmapped-face ((t (:foreground "grey90"))))
+ (p4-diff-change-face ((t (:foreground "dark green"))))
+ (p4-diff-del-face ((t (:bold t :foreground "salmon"))))
+ (p4-diff-file-face ((t (:background "blue"))))
+ (p4-diff-head-face ((t (:background "blue"))))
+ (p4-diff-ins-face ((t (:foreground "steelblue1"))))
+ (paren-blink-off ((t (:foreground "DodgerBlue4"))))
+ (paren-match ((t (:background "red" :foreground "yellow"))))
+ (paren-mismatch ((t (:background "DeepPink"))))
+ (pointer ((t (:background "white"))))
+ (primary-selection ((t (:bold t :background "medium sea green"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "red" :foreground "yellow"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "gray91" :foreground "sienna3"))))
+ (show-paren-match-face ((t (:background "cyan3" :foreground "blue"))))
+ (show-paren-mismatch-face ((t (:background "red" :foreground "blue"))))
+ (show-trailing-whitespace ((t (:background "red" :foreground "blue"))))
+ (speedbar-button-face ((t (:foreground "white"))))
+ (speedbar-directory-face ((t (:foreground "gray"))))
+ (speedbar-file-face ((t (:foreground "gold1"))))
+ (speedbar-highlight-face ((t (:background "lightslateblue" :foreground "gold1"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "chartreuse"))))
+ (text-cursor ((t (:background "DarkGoldenrod1" :foreground "DodgerBlue4"))))
+ (toolbar ((t (:background "#e7e3d6" :foreground "#000000"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (:background "#e7e3d6" :foreground "#000000"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "white" :foreground "midnightblue")))))))
+
+(defun color-theme-euphoria ()
+ "Color theme by oGLOWo, created 2000-04-19.
+Green on black theme including font-lock, speedbar, and widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-euphoria
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "yellow")
+ (foreground-color . "#00ff00")
+ (mouse-color . "yellow"))
+ ((help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "black" :foreground "#00ff00" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "misc-fixed"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cursor ((t (:background "yellow"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:foreground "magenta"))))
+ (font-lock-comment-face ((t (:foreground "deeppink"))))
+ (font-lock-constant-face ((t (:foreground "blue"))))
+ (font-lock-doc-face ((t (:foreground "cyan"))))
+ (font-lock-doc-string-face ((t (:foreground "cyan"))))
+ (font-lock-function-name-face ((t (:foreground "purple"))))
+ (font-lock-keyword-face ((t (:foreground "red"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue1"))))
+ (font-lock-reference-face ((t (nil))))
+ (font-lock-string-face ((t (:foreground "cyan"))))
+ (font-lock-type-face ((t (:foreground "yellow"))))
+ (font-lock-variable-name-face ((t (:foreground "violet"))))
+ (font-lock-warning-face ((t (:bold t :foreground "red" :weight bold))))
+ (fringe ((t (:background "gray16" :foreground "#00ff00"))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :background "grey20" :foreground "grey90" :box nil))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (horizontal-divider ((t (:background "gray16" :foreground "#00ff00"))))
+ (isearch ((t (:background "palevioletred2" :foreground "brown4"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (menu ((t (:background "gray16" :foreground "green"))))
+ (modeline ((t (:background "gray16" :foreground "#00ff00" :box (:line-width -1 :style released-button)))))
+ (modeline-buffer-id ((t (:background "gray16" :foreground "#00ff00"))))
+ (modeline-mousable ((t (:background "gray16" :foreground "#00ff00"))))
+ (modeline-mousable-minor-mode ((t (:background "gray16" :foreground "#00ff00"))))
+ (mouse ((t (:background "yellow"))))
+ (primary-selection ((t (:background "#00ff00" :foreground "black"))))
+ (region ((t (:background "steelblue" :foreground "white"))))
+ (scroll-bar ((t (:background "gray16" :foreground "#00ff00"))))
+ (secondary-selection ((t (:background "#00ff00" :foreground "black"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "#00ff00"))))
+ (speedbar-directory-face ((t (:foreground "#00ff00"))))
+ (speedbar-file-face ((t (:foreground "cyan"))))
+ (speedbar-highlight-face ((t (:background "#00ff00" :foreground "purple"))))
+ (speedbar-selected-face ((t (:foreground "deeppink" :underline t))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (tool-bar ((t (:background "gray16" :foreground "green" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "gray16" :foreground "#00ff00"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (vertical-divider ((t (:background "gray16" :foreground "#00ff00"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray"))))
+ (zmacs-region ((t (:background "steelblue" :foreground "white")))))))
+
+(defun color-theme-resolve ()
+ "Color theme by Damien Elmes, created 2002-04-24.
+A white smoke on blue color theme."
+ (interactive)
+ (color-theme-install
+ '(color-theme-resolve
+ ((background-color . "#00457f")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "DarkGoldenrod1")
+ (foreground-color . "white smoke")
+ (mouse-color . "white"))
+ ((display-time-mail-face . mode-line)
+ (help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "#00457f" :foreground "white smoke" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "b&h-lucidatypewriter"))))
+ (bold ((t (:bold t :foreground "snow2" :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (calendar-today-face ((t (:underline t))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cperl-array-face ((t (:bold t :foreground "wheat" :weight bold))))
+ (cperl-hash-face ((t (:bold t :foreground "chartreuse" :weight bold))))
+ (cursor ((t (:background "DarkGoldenrod1"))))
+ (diary-face ((t (:foreground "yellow"))))
+ (erc-input-face ((t (:foreground "lightblue2"))))
+ (erc-notice-face ((t (:foreground "lightyellow3"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-latex-bold-face ((t (:bold t :foreground "DarkOliveGreen" :weight bold))))
+ (font-latex-italic-face ((t (:italic t :foreground "DarkOliveGreen" :slant italic))))
+ (font-latex-math-face ((t (:foreground "burlywood"))))
+ (font-latex-sedate-face ((t (:foreground "LightGray"))))
+ (font-latex-string-face ((t (:foreground "RosyBrown"))))
+ (font-latex-warning-face ((t (:bold t :foreground "Red" :weight bold))))
+ (font-lock-builtin-face ((t (:foreground "wheat"))))
+ (font-lock-comment-face ((t (:foreground "light steel blue"))))
+ (font-lock-constant-face ((t (:foreground "seashell3"))))
+ (font-lock-doc-face ((t (:foreground "plum"))))
+ (font-lock-doc-string-face ((t (:foreground "#008000"))))
+ (font-lock-function-name-face ((t (:foreground "thistle1"))))
+ (font-lock-keyword-face ((t (:foreground "wheat"))))
+ (font-lock-other-emphasized-face ((t (:bold t :foreground "gold1" :weight bold))))
+ (font-lock-other-type-face ((t (:bold t :foreground "gold1" :weight bold))))
+ (font-lock-preprocessor-face ((t (:foreground "#800080"))))
+ (font-lock-reference-face ((t (:foreground "wheat"))))
+ (font-lock-string-face ((t (:foreground "plum"))))
+ (font-lock-type-face ((t (:foreground "lawn green"))))
+ (font-lock-variable-name-face ((t (:foreground "light yellow"))))
+ (font-lock-warning-face ((t (:foreground "plum"))))
+ (fringe ((t (:background "#000000"))))
+ (gnus-cite-attribution-face ((t (:italic t :slant italic))))
+ (gnus-cite-face-1 ((t (:foreground "light blue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "light cyan"))))
+ (gnus-cite-face-3 ((t (:foreground "light yellow"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :weight bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t :slant italic))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t :weight bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "aquamarine3" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :weight bold))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t :weight bold))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t :weight bold))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise" :weight bold))))
+ (gnus-header-content-face ((t (:italic t :foreground "snow2" :slant italic))))
+ (gnus-header-from-face ((t (:foreground "spring green"))))
+ (gnus-header-name-face ((t (:bold t :foreground "snow2" :weight bold))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "yellow" :slant italic))))
+ (gnus-header-subject-face ((t (:bold t :foreground "peach puff" :weight bold))))
+ (gnus-signature-face ((t (:italic t :slant italic))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "pink" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue" :slant italic))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen" :slant italic))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "pink" :slant italic))))
+ (gnus-summary-low-unread-face ((t (:italic t :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (header-line ((t (:background "grey20" :foreground "grey90"))))
+ (highlight ((t (:background "gray91" :foreground "firebrick"))))
+ (highline-face ((t (:background "paleturquoise" :foreground "black"))))
+ (holiday-face ((t (:background "chocolate4"))))
+ (isearch ((t (:background "palevioletred2" :foreground "brown4"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (menu ((t (nil))))
+ (message-cited-text-face ((t (:foreground "seashell3"))))
+ (message-header-cc-face ((t (:bold t :foreground "snow2" :weight bold))))
+ (message-header-name-face ((t (:bold t :foreground "snow1" :weight bold))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "snow2"))))
+ (message-header-subject-face ((t (:bold t :foreground "snow2" :weight bold))))
+ (message-header-to-face ((t (:bold t :foreground "snow2" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "misty rose"))))
+ (modeline ((t (:foreground "white" :background "#001040" :box (:line-width -1 :style released-button)))))
+ (modeline-buffer-id ((t (:foreground "white" :background "#001040"))))
+ (modeline-mousable ((t (:foreground "white" :background "#001040"))))
+ (modeline-mousable-minor-mode ((t (:foreground "white" :background "#001040"))))
+ (mouse ((t (:background "white"))))
+ (my-tab-face ((t (:background "SlateBlue1"))))
+ (p4-diff-del-face ((t (:bold t :foreground "salmon" :weight bold))))
+ (primary-selection ((t (:background "gray91" :foreground "DodgerBlue4"))))
+ (region ((t (:background "gray91" :foreground "DodgerBlue4"))))
+ (scroll-bar ((t (:background "grey75"))))
+ (secondary-selection ((t (:background "gray91" :foreground "sienna3"))))
+ (show-paren-match-face ((t (:background "cyan3" :foreground "blue"))))
+ (show-paren-mismatch-face ((t (:background "red" :foreground "blue"))))
+ (tool-bar ((t (:background "grey75" :foreground "black"))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "steel blue"))))
+ (widget-inactive-face ((t (:foreground "grey"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (zmacs-region ((t (:background "gray91" :foreground "DodgerBlue4")))))))
+
+(defun color-theme-xp ()
+ "Color theme by Girish Bharadwaj, created 2002-04-25.
+Includes custom, erc, font-lock, jde, semantic, speedbar, widget."
+ (interactive)
+ (color-theme-install
+ '(color-theme-xp
+ ((background-color . "lightyellow2")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "gray20")
+ (mouse-color . "black"))
+ ((help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (semantic-which-function-use-color . t)
+ (senator-eldoc-use-color . t)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "lightyellow2" :foreground "gray20" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-courier new"))))
+ (bg:erc-color-face0 ((t (:background "White"))))
+ (bg:erc-color-face1 ((t (:background "black"))))
+ (bg:erc-color-face10 ((t (:background "lightblue1"))))
+ (bg:erc-color-face11 ((t (:background "cyan"))))
+ (bg:erc-color-face12 ((t (:background "blue"))))
+ (bg:erc-color-face13 ((t (:background "deeppink"))))
+ (bg:erc-color-face14 ((t (:background "gray50"))))
+ (bg:erc-color-face15 ((t (:background "gray90"))))
+ (bg:erc-color-face2 ((t (:background "blue4"))))
+ (bg:erc-color-face3 ((t (:background "green4"))))
+ (bg:erc-color-face4 ((t (:background "red"))))
+ (bg:erc-color-face5 ((t (:background "brown"))))
+ (bg:erc-color-face6 ((t (:background "purple"))))
+ (bg:erc-color-face7 ((t (:background "orange"))))
+ (bg:erc-color-face8 ((t (:background "yellow"))))
+ (bg:erc-color-face9 ((t (:background "green"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (button ((t (:underline t))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "dark blue"))))
+ (cursor ((t (:background "black"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "gray85"))))
+ (custom-comment-tag-face ((t (:foreground "blue4"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:bold t :foreground "blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "red" :weight bold :height 1.2))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "blue" :weight bold :height 1.2))))
+ (erc-action-face ((t (:bold t :weight bold))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "IndianRed"))))
+ (erc-error-face ((t (:background "Red" :foreground "White"))))
+ (erc-input-face ((t (:foreground "brown"))))
+ (erc-inverse-face ((t (:background "Black" :foreground "White"))))
+ (erc-notice-face ((t (:bold t :foreground "SlateBlue" :weight bold))))
+ (erc-prompt-face ((t (:bold t :background "lightBlue2" :foreground "Black" :weight bold))))
+ (erc-timestamp-face ((t (:bold t :foreground "green" :weight bold))))
+ (erc-underline-face ((t (:underline t))))
+ (fg:erc-color-face0 ((t (:foreground "White"))))
+ (fg:erc-color-face1 ((t (:foreground "black"))))
+ (fg:erc-color-face10 ((t (:foreground "lightblue1"))))
+ (fg:erc-color-face11 ((t (:foreground "cyan"))))
+ (fg:erc-color-face12 ((t (:foreground "blue"))))
+ (fg:erc-color-face13 ((t (:foreground "deeppink"))))
+ (fg:erc-color-face14 ((t (:foreground "gray50"))))
+ (fg:erc-color-face15 ((t (:foreground "gray90"))))
+ (fg:erc-color-face2 ((t (:foreground "blue4"))))
+ (fg:erc-color-face3 ((t (:foreground "green4"))))
+ (fg:erc-color-face4 ((t (:foreground "red"))))
+ (fg:erc-color-face5 ((t (:foreground "brown"))))
+ (fg:erc-color-face6 ((t (:foreground "purple"))))
+ (fg:erc-color-face7 ((t (:foreground "orange"))))
+ (fg:erc-color-face8 ((t (:foreground "yellow"))))
+ (fg:erc-color-face9 ((t (:foreground "green"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:foreground "magenta3" :underline t :height 0.9))))
+ (font-lock-comment-face ((t (:italic t :foreground "gray60" :slant oblique :height 0.9))))
+ (font-lock-constant-face ((t (:bold t :foreground "medium purple" :weight bold :height 0.9))))
+ (font-lock-function-name-face ((t (:bold t :foreground "black" :weight bold))))
+ (font-lock-keyword-face ((t (:bold t :foreground "blue" :weight bold))))
+ (font-lock-string-face ((t (:foreground "red" :height 0.9))))
+ (font-lock-type-face ((t (:foreground "Royalblue"))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "maroon" :weight bold :height 0.9))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red" :weight bold))))
+ (fringe ((t (:background "dodgerblue"))))
+ (header-line ((t (:underline "red" :overline "red" :background "grey90" :foreground "grey20" :box nil))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (isearch ((t (:background "magenta2" :foreground "lightskyblue1"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t :slant italic))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-db-active-breakpoint-face ((t (:background "red" :foreground "black"))))
+ (jde-db-requested-breakpoint-face ((t (:background "yellow" :foreground "black"))))
+ (jde-db-spec-breakpoint-face ((t (:background "green" :foreground "black"))))
+ (jde-java-font-lock-api-face ((t (:foreground "dark goldenrod"))))
+ (jde-java-font-lock-bold-face ((t (:bold t :weight bold))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "green4"))))
+ (jde-java-font-lock-italic-face ((t (:italic t :slant italic))))
+ (jde-java-font-lock-link-face ((t (:foreground "cadetblue" :underline t :slant normal))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "Orchid"))))
+ (jde-java-font-lock-number-face ((t (:foreground "RosyBrown"))))
+ (jde-java-font-lock-operator-face ((t (:foreground "medium blue"))))
+ (jde-java-font-lock-package-face ((t (:foreground "blue3"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (menu ((t (nil))))
+ (minibuffer-prompt ((t (:foreground "dark blue"))))
+ (modeline ((t (:background "dodgerblue" :foreground "black" :overline "red" :underline "red"))))
+ (modeline-buffer-id ((t (:background "dodgerblue" :foreground "black"))))
+ (modeline-mousable ((t (:background "dodgerblue" :foreground "black"))))
+ (modeline-mousable-minor-mode ((t (:background "dodgerblue" :foreground "black"))))
+ (mode-line-inactive ((t (:italic t :underline "red" :overline "red" :background "white" :foreground "cadetblue" :box (:line-width -1 :color "grey75") :slant oblique :weight light))))
+ (mouse ((t (:background "black"))))
+ (primary-selection ((t (:background "lightgoldenrod2"))))
+ (region ((t (:background "lightgoldenrod2"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "yellow"))))
+ (semantic-dirty-token-face ((t (:background "lightyellow"))))
+ (semantic-unmatched-syntax-face ((t (:underline "red"))))
+ (senator-intangible-face ((t (:foreground "gray25"))))
+ (senator-momentary-highlight-face ((t (:background "gray70"))))
+ (senator-read-only-face ((t (:background "#CCBBBB"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (template-message-face ((t (:bold t :weight bold))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (zmacs-region ((t (:background "lightgoldenrod2")))))))
+
+(defun color-theme-gray30 ()
+ "Color theme by Girish Bharadwaj, created 2002-04-22."
+ (interactive)
+ (color-theme-install
+ '(color-theme-gray30
+ ((background-color . "grey30")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "gainsboro")
+ (mouse-color . "black"))
+ ((help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (semantic-which-function-use-color . t)
+ (senator-eldoc-use-color . t)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "grey30" :foreground "gainsboro" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-courier new"))))
+ (bg:erc-color-face0 ((t (:background "White"))))
+ (bg:erc-color-face1 ((t (:background "black"))))
+ (bg:erc-color-face10 ((t (:background "lightblue1"))))
+ (bg:erc-color-face11 ((t (:background "cyan"))))
+ (bg:erc-color-face12 ((t (:background "blue"))))
+ (bg:erc-color-face13 ((t (:background "deeppink"))))
+ (bg:erc-color-face14 ((t (:background "gray50"))))
+ (bg:erc-color-face15 ((t (:background "gray90"))))
+ (bg:erc-color-face2 ((t (:background "blue4"))))
+ (bg:erc-color-face3 ((t (:background "green4"))))
+ (bg:erc-color-face4 ((t (:background "red"))))
+ (bg:erc-color-face5 ((t (:background "brown"))))
+ (bg:erc-color-face6 ((t (:background "purple"))))
+ (bg:erc-color-face7 ((t (:background "orange"))))
+ (bg:erc-color-face8 ((t (:background "yellow"))))
+ (bg:erc-color-face9 ((t (:background "green"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (button ((t (:underline t))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cursor ((t (:background "black"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "dim gray"))))
+ (custom-comment-tag-face ((t (:foreground "gray80"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:bold t :foreground "light blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "pink" :weight bold :height 1.2))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "lime green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "light blue" :weight bold :height 1.2))))
+ (erc-action-face ((t (:bold t :weight bold))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "IndianRed"))))
+ (erc-error-face ((t (:background "Red" :foreground "White"))))
+ (erc-input-face ((t (:foreground "brown"))))
+ (erc-inverse-face ((t (:background "Black" :foreground "White"))))
+ (erc-notice-face ((t (:bold t :foreground "SlateBlue" :weight bold))))
+ (erc-prompt-face ((t (:bold t :background "lightBlue2" :foreground "Black" :weight bold))))
+ (erc-timestamp-face ((t (:bold t :foreground "green" :weight bold))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid" :weight bold))))
+ (eshell-ls-backup-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed" :weight bold))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "SkyBlue" :weight bold))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "Green" :weight bold))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red" :weight bold))))
+ (eshell-ls-product-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-readonly-face ((t (:foreground "Pink"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta" :weight bold))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "Cyan" :weight bold))))
+ (eshell-ls-unreadable-face ((t (:foreground "DarkGrey"))))
+ (fg:erc-color-face0 ((t (:foreground "White"))))
+ (fg:erc-color-face1 ((t (:foreground "black"))))
+ (fg:erc-color-face10 ((t (:foreground "lightblue1"))))
+ (fg:erc-color-face11 ((t (:foreground "cyan"))))
+ (fg:erc-color-face12 ((t (:foreground "blue"))))
+ (fg:erc-color-face13 ((t (:foreground "deeppink"))))
+ (fg:erc-color-face14 ((t (:foreground "gray50"))))
+ (fg:erc-color-face15 ((t (:foreground "gray90"))))
+ (fg:erc-color-face2 ((t (:foreground "blue4"))))
+ (fg:erc-color-face3 ((t (:foreground "green4"))))
+ (fg:erc-color-face4 ((t (:foreground "red"))))
+ (fg:erc-color-face5 ((t (:foreground "brown"))))
+ (fg:erc-color-face6 ((t (:foreground "purple"))))
+ (fg:erc-color-face7 ((t (:foreground "orange"))))
+ (fg:erc-color-face8 ((t (:foreground "yellow"))))
+ (fg:erc-color-face9 ((t (:foreground "green"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:foreground "LightSkyBlue" :underline t))))
+ (font-lock-comment-face ((t (:italic t :foreground "lightgreen" :slant oblique))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "DodgerBlue" :weight bold :height 1.05))))
+ (font-lock-keyword-face ((t (:foreground "LightPink" :height 1.05))))
+ (font-lock-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-type-face ((t (:foreground "yellow" :height 1.05))))
+ (font-lock-variable-name-face ((t (:foreground "gold"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink" :weight bold))))
+ (fringe ((t (:background "grey10"))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :background "grey20" :foreground "grey90" :box nil))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (isearch ((t (:background "palevioletred2" :foreground "brown4"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-db-active-breakpoint-face ((t (:background "red" :foreground "black"))))
+ (jde-db-requested-breakpoint-face ((t (:background "yellow" :foreground "black"))))
+ (jde-db-spec-breakpoint-face ((t (:background "green" :foreground "black"))))
+ (jde-java-font-lock-api-face ((t (:foreground "light goldenrod"))))
+ (jde-java-font-lock-bold-face ((t (:bold t :weight bold))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "light coral"))))
+ (jde-java-font-lock-italic-face ((t (:italic t :slant italic))))
+ (jde-java-font-lock-link-face ((t (:foreground "cadetblue" :underline t :slant normal))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "LightSteelBlue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "LightSalmon"))))
+ (jde-java-font-lock-operator-face ((t (:foreground "medium blue"))))
+ (jde-java-font-lock-package-face ((t (:foreground "steelblue1"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (menu ((t (nil))))
+ (minibuffer-prompt ((t (:foreground "cyan"))))
+ (mode-line ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (mode-line-inactive ((t (:background "grey30" :foreground "grey80" :box (:line-width -1 :color "grey40" :style nil) :weight light))))
+ (mouse ((t (:background "black"))))
+ (primary-selection ((t (:background "blue3"))))
+ (region ((t (:background "blue3"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "SkyBlue4"))))
+ (semantic-dirty-token-face ((t (:background "lightyellow"))))
+ (semantic-unmatched-syntax-face ((t (:underline "red"))))
+ (senator-intangible-face ((t (:foreground "gray75"))))
+ (senator-momentary-highlight-face ((t (:background "gray30"))))
+ (senator-read-only-face ((t (:background "#664444"))))
+ (show-paren-match-face ((t (:background "steelblue3"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green3"))))
+ (speedbar-directory-face ((t (:foreground "light blue"))))
+ (speedbar-file-face ((t (:foreground "cyan"))))
+ (speedbar-highlight-face ((t (:background "sea green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (template-message-face ((t (:bold t :weight bold))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray"))))
+ (zmacs-region ((t (:background "blue3")))))))
+
+(defun color-theme-dark-green ()
+ "Color theme by ces93, created 2002-03-30."
+ (interactive)
+ (color-theme-install
+ '(color-theme-dark-green
+ ((background-mode . light)
+ (background-toolbar-color . "#e79ddf7ddf7d")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#8e3886178617")
+ (top-toolbar-shadow-color . "#ffffffffffff"))
+ nil
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (nil))))
+ (fringe ((t (nil))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:background "#ffffff" :foreground "#000000"))))
+ (highlight ((t (:background "gray" :foreground "darkred"))))
+ (isearch ((t (:background "LightSlateGray" :foreground "red"))))
+ (italic ((t (:italic t))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68"))))
+ (mode-line ((t (:background "LightSlateGray" :foreground "black"))))
+ (modeline ((t (:background "LightSlateGray" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "LightSlateGray" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "LightSlateGray" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "LightSlateGray" :foreground "green4"))))
+ (pointer ((t (:background "#ffffff" :foreground "#000000"))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "gray65"))))
+ (right-margin ((t (nil))))
+ (rpm-spec-dir-face ((t (:foreground "green"))))
+ (rpm-spec-doc-face ((t (:foreground "magenta"))))
+ (rpm-spec-ghost-face ((t (:foreground "red"))))
+ (rpm-spec-macro-face ((t (:foreground "purple"))))
+ (rpm-spec-package-face ((t (:foreground "red"))))
+ (rpm-spec-tag-face ((t (:foreground "blue"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (text-cursor ((t (:background "Red3" :foreground "DarkSlateGray"))))
+ (tool-bar ((t (nil))))
+ (toolbar ((t (:background "#ffffff" :foreground "#000000"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (:background "#ffffff" :foreground "#000000"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "darkorange" :foreground "black")))))))
+
+(defun color-theme-whateveryouwant ()
+ "Color theme by Fabien Penso, created 2002-05-02."
+ (interactive)
+ (color-theme-install
+ '(color-theme-whateveryouwant
+ ((background-color . "white")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "black")
+ (mouse-color . "black"))
+ ((cperl-here-face . font-lock-string-face)
+ (cperl-invalid-face . underline)
+ (cperl-pod-face . font-lock-comment-face)
+ (cperl-pod-head-face . font-lock-variable-name-face)
+ (display-time-mail-face . mode-line)
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-carpal-button-face . bold)
+ (gnus-carpal-header-face . bold-italic)
+ (gnus-cite-attribution-face . gnus-cite-attribution-face)
+ (gnus-mouse-face . highlight)
+ (gnus-selected-tree-face . modeline)
+ (gnus-signature-face . gnus-signature-face)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (gnus-treat-display-xface . head)
+ (help-highlight-face . underline)
+ (ispell-highlight-face . flyspell-incorrect-face)
+ (list-matching-lines-face . bold)
+ (sgml-set-face . t)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight)
+ (x-face-mouse-face . highlight))
+ (default ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 116 :width normal :family "monotype-courier new"))))
+ (Info-title-1-face ((t (:bold t :weight bold :height 1.728 :family "helv"))))
+ (Info-title-2-face ((t (:bold t :weight bold :height 1.44 :family "helv"))))
+ (Info-title-3-face ((t (:bold t :weight bold :height 1.2 :family "helv"))))
+ (Info-title-4-face ((t (:bold t :weight bold :family "helv"))))
+ (antlr-font-lock-keyword-face ((t (:bold t :foreground "black" :weight bold))))
+ (antlr-font-lock-literal-face ((t (:bold t :foreground "brown4" :weight bold))))
+ (antlr-font-lock-ruledef-face ((t (:bold t :foreground "blue" :weight bold))))
+ (antlr-font-lock-ruleref-face ((t (:foreground "blue4"))))
+ (antlr-font-lock-tokendef-face ((t (:bold t :foreground "blue" :weight bold))))
+ (antlr-font-lock-tokenref-face ((t (:foreground "orange4"))))
+ (bbdb-company ((t (:italic t :slant italic))))
+ (bbdb-field-name ((t (:bold t :foreground "gray40" :weight bold))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (:underline t))))
+ (bold ((t (:bold t :foreground "gray40" :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (calendar-today-face ((t (:underline t))))
+ (change-log-acknowledgement-face ((t (:foreground "Firebrick"))))
+ (change-log-conditionals-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-date-face ((t (:foreground "RosyBrown"))))
+ (change-log-email-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-file-face ((t (:foreground "Blue"))))
+ (change-log-function-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-list-face ((t (:foreground "Purple"))))
+ (change-log-name-face ((t (:foreground "CadetBlue"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "dark blue"))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue" :weight bold))))
+ (cperl-hash-face ((t (:italic t :bold t :background "lightyellow2" :foreground "Red" :slant italic :weight bold))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (cursor ((t (:background "black"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "gray85"))))
+ (custom-comment-tag-face ((t (:foreground "blue4"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :weight bold :height 1.2 :family "helv"))))
+ (custom-group-tag-face ((t (:bold t :foreground "blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :foreground "red" :weight bold :height 1.2 :family "helv"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :foreground "blue" :weight bold :height 1.2 :family "helv"))))
+ (cvs-filename-face ((t (:foreground "blue4"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:bold t :foreground "blue4" :weight bold))))
+ (cvs-marked-face ((t (:bold t :foreground "green3" :weight bold))))
+ (cvs-msg-face ((t (:italic t :slant italic))))
+ (cvs-need-action-face ((t (:foreground "orange"))))
+ (cvs-unknown-face ((t (:foreground "red"))))
+ (diary-face ((t (:foreground "red"))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (:foreground "grey50"))))
+ (diff-file-header-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-function-face ((t (:foreground "grey50"))))
+ (diff-header-face ((t (:background "grey85"))))
+ (diff-hunk-header-face ((t (:background "grey85"))))
+ (diff-index-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-nonexistent-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-removed-face ((t (nil))))
+ (dired-face-boring ((t (:foreground "RosyBrown"))))
+ (dired-face-directory ((t (:foreground "Blue"))))
+ (dired-face-executable ((t (nil))))
+ (dired-face-flagged ((t (:bold t :foreground "Red" :weight bold))))
+ (dired-face-marked ((t (:bold t :foreground "Red" :weight bold))))
+ (dired-face-permissions ((t (nil))))
+ (dired-face-setuid ((t (nil))))
+ (dired-face-socket ((t (nil))))
+ (dired-face-symlink ((t (:foreground "Purple"))))
+ (ebrowse-default-face ((t (nil))))
+ (ebrowse-file-name-face ((t (:italic t :slant italic))))
+ (ebrowse-member-attribute-face ((t (:foreground "red"))))
+ (ebrowse-member-class-face ((t (:foreground "purple"))))
+ (ebrowse-progress-face ((t (:background "blue"))))
+ (ebrowse-root-class-face ((t (:bold t :foreground "blue" :weight bold))))
+ (ebrowse-tree-mark-face ((t (:foreground "red"))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (erc-action-face ((t (:bold t :weight bold))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "LightSalmon"))))
+ (erc-error-face ((t (:bold t :foreground "IndianRed" :weight bold))))
+ (erc-input-face ((t (:foreground "Beige"))))
+ (erc-inverse-face ((t (:background "wheat" :foreground "darkslategrey"))))
+ (erc-notice-face ((t (:foreground "MediumAquamarine"))))
+ (erc-pal-face ((t (:foreground "pale green"))))
+ (erc-prompt-face ((t (:foreground "MediumAquamarine"))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid" :weight bold))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed" :weight bold))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Blue" :weight bold))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "ForestGreen" :weight bold))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red" :weight bold))))
+ (eshell-ls-picture-face ((t (:foreground "Violet"))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta" :weight bold))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "Dark Cyan" :weight bold))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:bold t :foreground "#aa0000" :weight bold :width condensed :family "neep-alt"))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed" :weight bold))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green" :weight bold))))
+ (excerpt ((t (:italic t :slant italic))))
+ (fixed ((t (:bold t :weight bold))))
+ (fixed-pitch ((t (:family "courier"))))
+ (flyspell-duplicate-face ((t (:bold t :foreground "Gold3" :underline t :weight bold))))
+ (flyspell-incorrect-face ((t (:bold t :foreground "OrangeRed" :underline t :weight bold))))
+ (font-latex-bold-face ((t (:bold t :foreground "DarkOliveGreen" :weight bold))))
+ (font-latex-italic-face ((t (:italic t :foreground "DarkOliveGreen" :slant italic))))
+ (font-latex-math-face ((t (:foreground "SaddleBrown"))))
+ (font-latex-sedate-face ((t (:foreground "DimGray"))))
+ (font-latex-string-face ((t (:foreground "RosyBrown"))))
+ (font-latex-warning-face ((t (:bold t :foreground "Red" :weight bold))))
+ (font-lock-builtin-face ((t (:foreground "dodgerblue3"))))
+ (font-lock-comment-face ((t (:foreground "#cc0000" :width semi-condensed :family "helvetica"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-doc-face ((t (:foreground "RosyBrown"))))
+ (font-lock-doc-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "navy" :weight bold :height 100))))
+ (font-lock-keyword-face ((t (:bold t :foreground "red4" :weight bold))))
+ (font-lock-preprocessor-face ((t (:foreground "CadetBlue"))))
+ (font-lock-reference-face ((t (:foreground "Orchid"))))
+ (font-lock-string-face ((t (:foreground "navy"))))
+ (font-lock-type-face ((t (:bold t :foreground "black" :weight bold))))
+ (font-lock-variable-name-face ((t (:foreground "black"))))
+ (font-lock-warning-face ((t (:foreground "orange2"))))
+ (fringe ((t (:background "white"))))
+ (gnus-cite-attribution-face ((t (:italic t :slant italic))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :weight bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t :slant italic))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t :weight bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "red" :weight normal :height 120 :family "courier"))))
+ (gnus-group-news-1-face ((t (:foreground "red" :weight normal :height 120 :family "courier"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :weight bold))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t :weight bold))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t :weight bold))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen" :weight bold))))
+ (gnus-header-content-face ((t (:foreground "goldenrod" :slant normal :family "helvetica"))))
+ (gnus-header-from-face ((t (:bold t :foreground "grey75" :weight bold :height 140 :family "helvetica"))))
+ (gnus-header-name-face ((t (:foreground "grey75" :height 120 :family "helvetica"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "MidnightBlue" :slant italic))))
+ (gnus-header-subject-face ((t (:bold t :foreground "firebrick" :weight bold :height 160 :family "helvetica"))))
+ (gnus-picon-face ((t (:background "white" :foreground "black"))))
+ (gnus-picon-xbm-face ((t (:background "white" :foreground "black"))))
+ (gnus-signature-face ((t (:italic t :slant italic))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue" :slant italic))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen" :slant italic))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick" :slant italic))))
+ (gnus-summary-low-unread-face ((t (:italic t :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "grey65" :height 110 :width condensed :family "neep"))))
+ (gnus-summary-normal-read-face ((t (:foreground "grey75" :height 110 :width condensed :family "neep"))))
+ (gnus-summary-normal-ticked-face ((t (:bold t :foreground "firebrick" :weight bold :height 110 :width condensed :family "neep"))))
+ (gnus-summary-normal-unread-face ((t (:foreground "firebrick" :height 110 :width condensed :family "neep"))))
+ (gnus-summary-selected-face ((t (:background "gold" :foreground "black" :box (:line-width 1 :color "yellow" :style released-button) :height 140 :width condensed :family "neep"))))
+ (header-line ((t (:background "grey90" :foreground "grey20" :box nil))))
+ (hi-black-b ((t (:bold t :weight bold))))
+ (hi-black-hb ((t (:bold t :weight bold :height 1.67 :family "helv"))))
+ (hi-blue ((t (:background "light blue"))))
+ (hi-blue-b ((t (:bold t :foreground "blue" :weight bold))))
+ (hi-green ((t (:background "green"))))
+ (hi-green-b ((t (:bold t :foreground "green" :weight bold))))
+ (hi-pink ((t (:background "pink"))))
+ (hi-red-b ((t (:bold t :foreground "red" :weight bold))))
+ (hi-yellow ((t (:background "yellow"))))
+ (highlight ((t (:background "black" :foreground "white"))))
+ (highlight-changes-delete-face ((t (:foreground "red" :underline t))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highline-face ((t (:background "gray80"))))
+ (holiday-face ((t (:background "pink"))))
+ (idlwave-help-link-face ((t (:foreground "Blue"))))
+ (idlwave-shell-bp-face ((t (:background "Pink" :foreground "Black"))))
+ (info-header-node ((t (:italic t :bold t :foreground "brown" :slant italic :weight bold))))
+ (info-header-xref ((t (:bold t :foreground "magenta4" :weight bold))))
+ (info-menu-5 ((t (:foreground "red1"))))
+ (info-menu-header ((t (:bold t :weight bold :family "helv"))))
+ (info-node ((t (:italic t :bold t :foreground "brown" :slant italic :weight bold))))
+ (info-xref ((t (:bold t :foreground "magenta4" :weight bold))))
+ (isearch ((t (:background "magenta4" :foreground "lightskyblue1"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t :slant italic))))
+ (log-view-file-face ((t (:bold t :background "grey70" :weight bold))))
+ (log-view-message-face ((t (:background "grey85"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (menu ((t (nil))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "grey45" :weight normal :family "helvetica"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue" :weight bold))))
+ (message-header-to-face ((t (:bold t :foreground "grey60" :weight bold :height 120 :family "helvetica"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (mode-line ((t (:background "grey90" :foreground "black" :box (:line-width 1 :style none) :width condensed :family "neep"))))
+ (modeline-buffer-id ((t (:bold t :background "grey75" :foreground "black" :box (:line-width -1 :style released-button) :weight bold))))
+ (modeline-mousable ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (modeline-mousable-minor-mode ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (mouse ((t (:background "black"))))
+ (mpg123-face-cur ((t (:background "#004080" :foreground "yellow"))))
+ (mpg123-face-slider ((t (:background "yellow" :foreground "black"))))
+ (primary-selection ((t (:background "lightgoldenrod2"))))
+ (reb-match-0 ((t (:background "lightblue"))))
+ (reb-match-1 ((t (:background "aquamarine"))))
+ (reb-match-2 ((t (:background "springgreen"))))
+ (reb-match-3 ((t (:background "yellow"))))
+ (region ((t (:background "#aa0000" :foreground "white"))))
+ (scroll-bar ((t (:background "grey75"))))
+ (secondary-selection ((t (:background "yellow"))))
+ (sgml-comment-face ((t (:italic t :foreground "SeaGreen" :slant italic))))
+ (sgml-doctype-face ((t (:bold t :foreground "FireBrick" :weight bold))))
+ (sgml-end-tag-face ((t (:stipple nil :background "white" :foreground "SlateBlue" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 116 :width normal :family "monotype-courier new"))))
+ (sgml-entity-face ((t (:stipple nil :background "SlateBlue" :foreground "Red" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 116 :width normal :family "monotype-courier new"))))
+ (sgml-ignored-face ((t (nil))))
+ (sgml-ms-end-face ((t (nil))))
+ (sgml-ms-start-face ((t (nil))))
+ (sgml-pi-face ((t (:bold t :foreground "gray40" :weight bold))))
+ (sgml-sgml-face ((t (:bold t :foreground "gray40" :weight bold))))
+ (sgml-short-ref-face ((t (nil))))
+ (sgml-shortref-face ((t (:bold t :foreground "gray40" :weight bold))))
+ (sgml-start-tag-face ((t (:stipple nil :background "white" :foreground "SlateBlue" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 116 :width normal :family "monotype-courier new"))))
+ (sh-heredoc-face ((t (:foreground "tan"))))
+ (show-paren-match-face ((t (:background "gray80" :foreground "black"))))
+ (show-paren-mismatch-face ((t (:background "red" :foreground "yellow"))))
+ (show-tabs-space-face ((t (:foreground "yellow"))))
+ (show-tabs-tab-face ((t (:foreground "red"))))
+ (smerge-base-face ((t (:foreground "red"))))
+ (smerge-markers-face ((t (:background "grey85"))))
+ (smerge-mine-face ((t (:foreground "blue"))))
+ (smerge-other-face ((t (:foreground "darkgreen"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (strokes-char-face ((t (:background "lightgray"))))
+ (term-black ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-blackbg ((t (:stipple nil :background "black" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-blue ((t (:stipple nil :background "white" :foreground "blue" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-bluebg ((t (:stipple nil :background "blue" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-bold ((t (:bold t :stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight bold :width normal :family "adobe-courier"))))
+ (term-cyan ((t (:stipple nil :background "white" :foreground "cyan" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-cyanbg ((t (:stipple nil :background "cyan" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-bg ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-bg-inv ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-fg ((t (:stipple nil :background "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-fg-inv ((t (:stipple nil :background "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-green ((t (:stipple nil :background "white" :foreground "green" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-greenbg ((t (:stipple nil :background "green" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-invisible ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-invisible-inv ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-magenta ((t (:stipple nil :background "white" :foreground "magenta" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-magentabg ((t (:stipple nil :background "magenta" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-red ((t (:stipple nil :background "white" :foreground "red" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-redbg ((t (:stipple nil :background "red" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-underline ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline t :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-white ((t (:stipple nil :background "white" :foreground "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-whitebg ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-yellow ((t (:stipple nil :background "white" :foreground "yellow" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-yellowbg ((t (:stipple nil :background "yellow" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (tex-math-face ((t (:foreground "RosyBrown"))))
+ (texinfo-heading-face ((t (:foreground "Blue"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:foreground "navy" :underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (vcursor ((t (:background "cyan" :foreground "blue" :underline t))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red" :weight bold))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange" :weight bold))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:foreground "Blue" :underline t))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:foreground "DarkGoldenrod" :underline t))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:foreground "ForestGreen" :underline t))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:foreground "Brown" :underline t))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:foreground "Grey50" :underline t))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (woman-addition-face ((t (:foreground "orange"))))
+ (woman-bold-face ((t (:bold t :foreground "blue" :weight bold))))
+ (woman-italic-face ((t (:italic t :foreground "red" :underline t :slant italic))))
+ (woman-unknown-face ((t (:foreground "brown"))))
+ (zmacs-region ((t (:background "lightgoldenrod2")))))))
+
+(defun color-theme-bharadwaj-slate ()
+ "Color theme by Girish Bharadwaj, created 2002-05-06."
+ (interactive)
+ (color-theme-install
+ '(color-theme-bharadwaj-slate
+ ((background-color . "DarkSlateGray")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "khaki")
+ (foreground-color . "palegreen")
+ (mouse-color . "black"))
+ ((display-time-mail-face . mode-line)
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-mouse-face . highlight)
+ (help-highlight-face . underline)
+ (ibuffer-deletion-face . font-lock-type-face)
+ (ibuffer-filter-group-name-face . bold)
+ (ibuffer-marked-face . font-lock-warning-face)
+ (ibuffer-title-face . font-lock-type-face)
+ (list-matching-lines-buffer-name-face . underline)
+ (list-matching-lines-face . bold)
+ (semantic-which-function-use-color . t)
+ (senator-eldoc-use-color . t)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "DarkSlateGray" :foreground "palegreen" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-lucida sans typewriter"))))
+ (bg:erc-color-face0 ((t (:background "White"))))
+ (bg:erc-color-face1 ((t (:background "black"))))
+ (bg:erc-color-face10 ((t (:background "lightblue1"))))
+ (bg:erc-color-face11 ((t (:background "cyan"))))
+ (bg:erc-color-face12 ((t (:background "blue"))))
+ (bg:erc-color-face13 ((t (:background "deeppink"))))
+ (bg:erc-color-face14 ((t (:background "gray50"))))
+ (bg:erc-color-face15 ((t (:background "gray90"))))
+ (bg:erc-color-face2 ((t (:background "blue4"))))
+ (bg:erc-color-face3 ((t (:background "green4"))))
+ (bg:erc-color-face4 ((t (:background "red"))))
+ (bg:erc-color-face5 ((t (:background "brown"))))
+ (bg:erc-color-face6 ((t (:background "purple"))))
+ (bg:erc-color-face7 ((t (:background "orange"))))
+ (bg:erc-color-face8 ((t (:background "yellow"))))
+ (bg:erc-color-face9 ((t (:background "green"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (button ((t (:underline t))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cursor ((t (:background "khaki"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "dim gray"))))
+ (custom-comment-tag-face ((t (:foreground "gray80"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:bold t :foreground "light blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "pink" :weight bold :height 1.2))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "lime green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "light blue" :weight bold :height 1.2))))
+ (erc-action-face ((t (:bold t :box (:line-width 2 :color "grey75") :weight bold))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "IndianRed"))))
+ (erc-error-face ((t (:background "Red" :foreground "White"))))
+ (erc-input-face ((t (:foreground "lightblue"))))
+ (erc-inverse-face ((t (:background "Black" :foreground "White"))))
+ (erc-notice-face ((t (:bold t :foreground "dodgerblue" :weight bold))))
+ (erc-prompt-face ((t (:bold t :background "black" :foreground "white" :weight bold))))
+ (erc-timestamp-face ((t (:bold t :foreground "green" :weight bold))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid" :weight bold))))
+ (eshell-ls-backup-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed" :weight bold))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "SkyBlue" :weight bold))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "Green" :weight bold))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red" :weight bold))))
+ (eshell-ls-product-face ((t (:foreground "LightSalmon"))))
+ (eshell-ls-readonly-face ((t (:foreground "Pink"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta" :weight bold))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "Cyan" :weight bold))))
+ (eshell-ls-unreadable-face ((t (:foreground "DarkGrey"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Pink" :weight bold))))
+ (fg:erc-color-face0 ((t (:foreground "White"))))
+ (fg:erc-color-face1 ((t (:foreground "black"))))
+ (fg:erc-color-face10 ((t (:foreground "lightblue1"))))
+ (fg:erc-color-face11 ((t (:foreground "cyan"))))
+ (fg:erc-color-face12 ((t (:foreground "blue"))))
+ (fg:erc-color-face13 ((t (:foreground "deeppink"))))
+ (fg:erc-color-face14 ((t (:foreground "gray50"))))
+ (fg:erc-color-face15 ((t (:foreground "gray90"))))
+ (fg:erc-color-face2 ((t (:foreground "blue4"))))
+ (fg:erc-color-face3 ((t (:foreground "green4"))))
+ (fg:erc-color-face4 ((t (:foreground "red"))))
+ (fg:erc-color-face5 ((t (:foreground "brown"))))
+ (fg:erc-color-face6 ((t (:foreground "purple"))))
+ (fg:erc-color-face7 ((t (:foreground "orange"))))
+ (fg:erc-color-face8 ((t (:foreground "yellow"))))
+ (fg:erc-color-face9 ((t (:foreground "green"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "pink" :weight bold :height 1.1))))
+ (font-lock-comment-face ((t (:foreground "violet" :height 1.0))))
+ (font-lock-constant-face ((t (:bold t :foreground "tomato" :weight bold :height 1.0))))
+ (font-lock-function-name-face ((t (:bold t :foreground "DodgerBlue" :weight bold))))
+ (font-lock-keyword-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (font-lock-preprocessor-face ((t (:bold t :foreground "tomato" :weight bold :height 1.0))))
+ (font-lock-reference-face ((t (:bold t :foreground "pink" :weight bold :height 1.1))))
+ (font-lock-string-face ((t (:foreground "red" :height 1.0))))
+ (font-lock-type-face ((t (:foreground "lightblue3"))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "gray" :weight bold :height 1.0))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink" :weight bold))))
+ (fringe ((t (:background "DarkSlateGray"))))
+ (gnus-cite-attribution-face ((t (:italic t :slant italic))))
+ (gnus-cite-face-1 ((t (:foreground "light blue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "light cyan"))))
+ (gnus-cite-face-3 ((t (:foreground "light yellow"))))
+ (gnus-cite-face-4 ((t (:foreground "light pink"))))
+ (gnus-cite-face-5 ((t (:foreground "pale green"))))
+ (gnus-cite-face-6 ((t (:foreground "beige"))))
+ (gnus-cite-face-7 ((t (:foreground "orange"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :weight bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t :slant italic))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t :weight bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "aquamarine1"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "aquamarine1" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "aquamarine2"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "aquamarine2" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "aquamarine3"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "aquamarine3" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "aquamarine4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "aquamarine4" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "PaleTurquoise"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "turquoise"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :weight bold))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t :weight bold))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t :weight bold))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkTurquoise"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkTurquoise" :weight bold))))
+ (gnus-header-content-face ((t (:italic t :foreground "forest green" :slant italic))))
+ (gnus-header-from-face ((t (:foreground "spring green"))))
+ (gnus-header-name-face ((t (:foreground "SeaGreen"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "yellow" :slant italic))))
+ (gnus-header-subject-face ((t (:foreground "SeaGreen3"))))
+ (gnus-signature-face ((t (:italic t :slant italic))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "SkyBlue" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "PaleGreen" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "pink" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "SkyBlue" :slant italic))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "PaleGreen" :slant italic))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "pink" :slant italic))))
+ (gnus-summary-low-unread-face ((t (:italic t :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "SkyBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "PaleGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "pink"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (header-line ((t (:underline "blueviolet" :overline "blueviolet" :box (:line-width -1 :style released-button) :background "grey20" :foreground "grey90" :box nil))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (html-helper-bold-face ((t (:bold t :foreground "wheat" :weight bold))))
+ (html-helper-italic-face ((t (:italic t :foreground "spring green" :slant italic))))
+ (html-helper-underline-face ((t (:foreground "cornsilk" :underline t))))
+ (html-tag-face ((t (:bold t :foreground "deep sky blue" :weight bold))))
+ (info-menu-6 ((t (nil))))
+ (isearch ((t (:background "palevioletred2" :foreground "brown4"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-db-active-breakpoint-face ((t (:background "red" :foreground "black"))))
+ (jde-db-requested-breakpoint-face ((t (:background "yellow" :foreground "black"))))
+ (jde-db-spec-breakpoint-face ((t (:background "green" :foreground "black"))))
+ (jde-java-font-lock-api-face ((t (:foreground "light goldenrod"))))
+ (jde-java-font-lock-bold-face ((t (:bold t :weight bold))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "light coral"))))
+ (jde-java-font-lock-italic-face ((t (:italic t :slant italic))))
+ (jde-java-font-lock-link-face ((t (:foreground "blue" :underline t :slant normal))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "LightSteelBlue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "LightSalmon"))))
+ (jde-java-font-lock-operator-face ((t (:foreground "medium blue"))))
+ (jde-java-font-lock-package-face ((t (:foreground "steelblue1"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (menu ((t (nil))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4" :weight bold))))
+ (message-header-name-face ((t (:foreground "DarkGreen"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "yellow" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "#b00000"))))
+ (message-header-subject-face ((t (:foreground "green3"))))
+ (message-header-to-face ((t (:bold t :foreground "green2" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "blue3"))))
+ (minibuffer-prompt ((t (:foreground "cyan"))))
+ (mode-line ((t (:background "Darkslategray" :foreground "white" :box (:line-width -1 :style released-button) :overline "blueviolet" :underline "blueviolet"))))
+ (mode-line-inactive ((t (:italic t :underline "blueviolet" :overline "blueviolet" :background "white" :foreground "cadetblue" :box (:line-width -1 :color "grey75") :slant oblique :weight light))))
+ (modeline ((t (:background "Darkslategray" :foreground "white" :box (:line-width -1 :style released-button) :overline "blueviolet" :underline "blueviolet"))))
+ (modeline-buffer-id ((t (:background "Darkslategray" :foreground "white" :box (:line-width -1 :style released-button) :overline "blueviolet" :underline "blueviolet"))))
+ (modeline-mousable ((t (:background "Darkslategray" :foreground "white" :box (:line-width -1 :style released-button) :overline "blueviolet" :underline "blueviolet"))))
+ (modeline-mousable-minor-mode ((t (:background "Darkslategray" :foreground "white" :box (:line-width -1 :style released-button) :overline "blueviolet" :underline "blueviolet"))))
+ (mouse ((t (:background "black"))))
+ (primary-selection ((t (:background "dimgray"))))
+ (region ((t (:background "dimgray"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "SkyBlue4"))))
+ (semantic-dirty-token-face ((t (:background "lightyellow"))))
+ (semantic-unmatched-syntax-face ((t (:underline "red"))))
+ (senator-intangible-face ((t (:foreground "gray75"))))
+ (senator-momentary-highlight-face ((t (:background "gray30"))))
+ (senator-read-only-face ((t (:background "#664444"))))
+ (show-paren-match-face ((t (:bold t :foreground "lightblue" :weight bold :height 1.1))))
+ (show-paren-mismatch-face ((t (:bold t :foreground "red" :weight bold :height 1.1))))
+ (show-tabs-space-face ((t (:foreground "yellow"))))
+ (show-tabs-tab-face ((t (:foreground "red"))))
+ (speedbar-button-face ((t (:foreground "green3"))))
+ (speedbar-directory-face ((t (:foreground "light blue"))))
+ (speedbar-file-face ((t (:foreground "cyan"))))
+ (speedbar-highlight-face ((t (:background "sea green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (template-message-face ((t (:bold t :weight bold))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (:background "black"))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-bold ((t (:bold t :weight bold))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-default ((t (:stipple nil :background "DarkSlateGray" :foreground "palegreen" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "outline-lucida sans typewriter"))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-green ((t (:foreground "green"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-red ((t (:foreground "red"))))
+ (term-redbg ((t (:background "red"))))
+ (term-underline ((t (:underline t))))
+ (term-white ((t (:foreground "white"))))
+ (term-whitebg ((t (:background "white"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (tool-bar ((t (:background "DarkSlateGray" :foreground "White" :box (:line-width 1 :color "blue")))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray"))))
+ (zmacs-region ((t (:background "dimgray")))))))
+
+(defun color-theme-lethe ()
+ "Color theme by Ivica Loncar, created 2002-08-02.
+Some additional X resources as suggested by the author:
+
+Emacs*menubar.Foreground: Yellow
+Emacs*menubar.Background: #1a2b3c
+Emacs*menubar.topShadowColor: gray
+Emacs*menubar.bottomShadowColor: dimgray
+
+Some fonts I really like (note: this fonts are not highly
+available):
+
+Emacs.default.attributeFont: -letl-*-medium-r-*-*-*-*-*-*-*-*-iso8859-2
+Emacs*menubar*Font: -etl-fixed-medium-r-normal--14-*-*-*-*-*-iso8859-1
+
+Mouse fix:
+
+Emacs*dialog*XmPushButton.translations:#override\n\
+ <Btn1Down>: Arm()\n\
+ <Btn1Down>,<Btn1Up>: Activate()\
+ Disarm()\n\
+ <Btn1Down>(2+): MultiArm()\n\
+ <Btn1Up>(2+): MultiActivate()\n\
+ <Btn1Up>: Activate()\
+ Disarm()\n\
+ <Key>osfSelect: ArmAndActivate()\n\
+ <Key>osfActivate: ArmAndActivate()\n\
+ <Key>osfHelp: Help()\n\
+ ~Shift ~Meta ~Alt <Key>Return: ArmAndActivate()\n\
+ <EnterWindow>: Enter()\n\
+ <LeaveWindow>: Leave()\n
+
+Bonus: do not use 3D modeline."
+ (interactive)
+ (color-theme-install
+ '(color-theme-lethe
+ ((background-color . "black")
+ (background-mode . dark)
+ (background-toolbar-color . "#000000000000")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "red")
+ (cursor-color . "red")
+ (foreground-color . "peachpuff")
+ (mouse-color . "red")
+ (top-toolbar-shadow-color . "#f5f5f5f5f5f5"))
+ ((buffers-tab-face . buffers-tab)
+ (cscope-use-face . t)
+ (gnus-mouse-face . highlight))
+ (default ((t (nil))))
+ (bg:erc-color-face0 ((t (:background "White"))))
+ (bg:erc-color-face1 ((t (nil))))
+ (bg:erc-color-face10 ((t (:background "lightblue1"))))
+ (bg:erc-color-face11 ((t (:background "cyan"))))
+ (bg:erc-color-face12 ((t (:background "blue"))))
+ (bg:erc-color-face13 ((t (:background "deeppink"))))
+ (bg:erc-color-face14 ((t (:background "gray50"))))
+ (bg:erc-color-face15 ((t (:background "gray90"))))
+ (bg:erc-color-face2 ((t (:background "blue4"))))
+ (bg:erc-color-face3 ((t (:background "green4"))))
+ (bg:erc-color-face4 ((t (:background "red"))))
+ (bg:erc-color-face5 ((t (:background "brown"))))
+ (bg:erc-color-face6 ((t (:background "purple"))))
+ (bg:erc-color-face7 ((t (:background "orange"))))
+ (bg:erc-color-face8 ((t (:background "yellow"))))
+ (bg:erc-color-face9 ((t (:background "green"))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border ((t (nil))))
+ (border-glyph ((t (nil))))
+ (buffers-tab ((t (:bold t :foreground "red"))))
+ (button ((t (:underline t))))
+ (calendar-today-face ((t (:underline t))))
+ (comint-highlight-input ((t (:bold t))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue"))))
+ (cperl-hash-face ((t (:italic t :bold t :background "lightyellow2" :foreground "Red"))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (cscope-file-face ((t (:foreground "blue"))))
+ (cscope-function-face ((t (:foreground "magenta"))))
+ (cscope-line-face ((t (:foreground "green"))))
+ (cscope-line-number-face ((t (:foreground "red"))))
+ (cscope-mouse-face ((t (:background "blue" :foreground "white"))))
+ (cursor ((t (nil))))
+ (custom-button-face ((t (nil))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black"))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "dim gray"))))
+ (custom-comment-tag-face ((t (:foreground "gray80"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t))))
+ (custom-variable-tag-face ((t (:underline t :foreground "blue"))))
+ (cyan ((t (:foreground "cyan"))))
+ (diary-face ((t (:foreground "red"))))
+ (dired-face-boring ((t (:foreground "Gray65"))))
+ (dired-face-directory ((t (:bold t))))
+ (dired-face-executable ((t (:foreground "SeaGreen"))))
+ (dired-face-flagged ((t (:background "LightSlateGray"))))
+ (dired-face-marked ((t (:background "PaleVioletRed"))))
+ (dired-face-permissions ((t (:background "grey75" :foreground "black"))))
+ (dired-face-setuid ((t (:foreground "Red"))))
+ (dired-face-socket ((t (:foreground "magenta"))))
+ (dired-face-symlink ((t (:foreground "cyan"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (erc-action-face ((t (:bold t))))
+ (erc-bold-face ((t (:bold t))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "IndianRed"))))
+ (erc-error-face ((t (:background "Red" :foreground "White"))))
+ (erc-input-face ((t (:foreground "brown"))))
+ (erc-inverse-face ((t (:background "Black" :foreground "White"))))
+ (erc-notice-face ((t (:bold t :foreground "SlateBlue"))))
+ (erc-prompt-face ((t (:bold t :background "lightBlue2" :foreground "Black"))))
+ (erc-timestamp-face ((t (:bold t :foreground "green"))))
+ (erc-underline-face ((t (:underline t))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid"))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Blue"))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "ForestGreen"))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red"))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta"))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "DarkCyan"))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Red"))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed"))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green"))))
+ (excerpt ((t (:italic t))))
+ (fg:erc-color-face0 ((t (:foreground "White"))))
+ (fg:erc-color-face1 ((t (:foreground "black"))))
+ (fg:erc-color-face10 ((t (:foreground "lightblue1"))))
+ (fg:erc-color-face11 ((t (:foreground "cyan"))))
+ (fg:erc-color-face12 ((t (:foreground "blue"))))
+ (fg:erc-color-face13 ((t (:foreground "deeppink"))))
+ (fg:erc-color-face14 ((t (:foreground "gray50"))))
+ (fg:erc-color-face15 ((t (:foreground "gray90"))))
+ (fg:erc-color-face2 ((t (:foreground "blue4"))))
+ (fg:erc-color-face3 ((t (:foreground "green4"))))
+ (fg:erc-color-face4 ((t (:foreground "red"))))
+ (fg:erc-color-face5 ((t (:foreground "brown"))))
+ (fg:erc-color-face6 ((t (:foreground "purple"))))
+ (fg:erc-color-face7 ((t (:foreground "orange"))))
+ (fg:erc-color-face8 ((t (:foreground "yellow"))))
+ (fg:erc-color-face9 ((t (:foreground "green"))))
+ (fixed ((t (:bold t))))
+ (fixed-pitch ((t (:size "16"))))
+ (flyspell-duplicate-face ((t (:underline t :bold t :foreground "Gold3"))))
+ (flyspell-incorrect-face ((t (:underline t :bold t :foreground "OrangeRed"))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:bold t :foreground "cyan"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-doc-face ((t (:bold t :foreground "red"))))
+ (font-lock-doc-string-face ((t (:bold t :foreground "red"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "white"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "yellow"))))
+ (font-lock-preprocessor-face ((t (:bold t :foreground "blue"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:bold t :foreground "magenta"))))
+ (font-lock-type-face ((t (:bold t :foreground "lightgreen"))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "white"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (fringe ((t (:background "grey95"))))
+ (gdb-arrow-face ((t (:bold t :background "yellow" :foreground "red"))))
+ (gnus-cite-attribution-face ((t (:italic t))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-highlight-words ((t (:foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4"))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-picons-face ((t (:background "white" :foreground "black"))))
+ (gnus-picons-xbm-face ((t (:background "white" :foreground "black"))))
+ (gnus-signature-face ((t (:italic t))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-summary-cancelled-face ((t (:foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-x-face ((t (:background "white" :foreground "black"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:size "12" :background "Gray80" :foreground "black"))))
+ (header-line ((t (:background "grey20" :foreground "grey90"))))
+ (highlight ((t (:bold t :background "yellow" :foreground "red"))))
+ (highlight-changes-delete-face ((t (:underline t :foreground "red"))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (highline-face ((t (:background "paleturquoise"))))
+ (holiday-face ((t (:background "pink"))))
+ (hyper-apropos-documentation ((t (:foreground "#aaaaaa"))))
+ (hyper-apropos-heading ((t (:bold t :foreground "#999999"))))
+ (hyper-apropos-hyperlink ((t (:foreground "Violet"))))
+ (hyper-apropos-major-heading ((t (:bold t :foreground "#ff0000"))))
+ (hyper-apropos-section-heading ((t (:italic t :bold t :foreground "#33aa55"))))
+ (hyper-apropos-warning ((t (:bold t :foreground "red"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (:background "paleturquoise"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (:italic t))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-db-active-breakpoint-face ((t (:background "red" :foreground "black"))))
+ (jde-db-requested-breakpoint-face ((t (:background "yellow" :foreground "black"))))
+ (jde-db-spec-breakpoint-face ((t (:background "green" :foreground "black"))))
+ (jde-java-font-lock-api-face ((t (:foreground "light goldenrod"))))
+ (jde-java-font-lock-bold-face ((t (:bold t))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "light coral"))))
+ (jde-java-font-lock-italic-face ((t (:italic t))))
+ (jde-java-font-lock-link-face ((t (:underline t :foreground "cadetblue"))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "LightSteelBlue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "LightSalmon"))))
+ (jde-java-font-lock-operator-face ((t (:foreground "medium blue"))))
+ (jde-java-font-lock-package-face ((t (:foreground "steelblue1"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68"))))
+ (magenta ((t (:foreground "magenta"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (menu ((t (nil))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:bold t :foreground "cyan"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (minibuffer-prompt ((t (:foreground "cyan"))))
+ (mode-line ((t (:background "grey75" :foreground "black"))))
+ (mode-line-inactive ((t (:background "grey30" :foreground "grey80"))))
+ (modeline ((t (:bold t :background "red" :foreground "yellow"))))
+ (modeline-buffer-id ((t (:bold t :background "red" :foreground "yellow"))))
+ (modeline-mousable ((t (:background "red" :foreground "yellow"))))
+ (modeline-mousable-minor-mode ((t (:background "red" :foreground "green4"))))
+ (mouse ((t (nil))))
+ (paren-blink-off ((t (:foreground "black"))))
+ (paren-match ((t (:bold t :background "yellow" :foreground "red"))))
+ (paren-mismatch ((t (:background "DeepPink"))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "gray75"))))
+ (right-margin ((t (nil))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (semantic-dirty-token-face ((t (:background "lightyellow"))))
+ (semantic-unmatched-syntax-face ((t (nil))))
+ (senator-intangible-face ((t (:foreground "gray75"))))
+ (senator-momentary-highlight-face ((t (:background "gray30"))))
+ (senator-read-only-face ((t (:background "#664444"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:underline t :foreground "red"))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (template-message-face ((t (:bold t))))
+ (term-black ((t (:foreground "black"))))
+ (term-blackbg ((t (nil))))
+ (term-blue ((t (:foreground "blue"))))
+ (term-blue-bold-face ((t (:bold t :foreground "blue"))))
+ (term-blue-face ((t (:foreground "blue"))))
+ (term-blue-inv-face ((t (:background "blue"))))
+ (term-blue-ul-face ((t (:underline t :foreground "blue"))))
+ (term-bluebg ((t (:background "blue"))))
+ (term-bold ((t (:bold t))))
+ (term-cyan ((t (:foreground "cyan"))))
+ (term-cyan-bold-face ((t (:bold t :foreground "cyan"))))
+ (term-cyan-face ((t (:foreground "cyan"))))
+ (term-cyan-inv-face ((t (:background "cyan"))))
+ (term-cyan-ul-face ((t (:underline t :foreground "cyan"))))
+ (term-cyanbg ((t (:background "cyan"))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-bold-face ((t (:bold t))))
+ (term-default-face ((t (nil))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-default-inv-face ((t (:background "peachpuff" :foreground "black"))))
+ (term-default-ul-face ((t (:underline t))))
+ (term-green ((t (:foreground "green"))))
+ (term-green-bold-face ((t (:bold t :foreground "green"))))
+ (term-green-face ((t (:foreground "green"))))
+ (term-green-inv-face ((t (:background "green"))))
+ (term-green-ul-face ((t (:underline t :foreground "green"))))
+ (term-greenbg ((t (:background "green"))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (:foreground "magenta"))))
+ (term-magenta-bold-face ((t (:bold t :foreground "magenta"))))
+ (term-magenta-face ((t (:foreground "magenta"))))
+ (term-magenta-inv-face ((t (:background "magenta"))))
+ (term-magenta-ul-face ((t (:underline t :foreground "magenta"))))
+ (term-magentabg ((t (:background "magenta"))))
+ (term-red ((t (:foreground "red"))))
+ (term-red-bold-face ((t (:bold t :foreground "red"))))
+ (term-red-face ((t (:foreground "red"))))
+ (term-red-inv-face ((t (:background "red"))))
+ (term-red-ul-face ((t (:underline t :foreground "red"))))
+ (term-redbg ((t (:background "red"))))
+ (term-underline ((t (:underline t))))
+ (term-white ((t (:foreground "white"))))
+ (term-white-bold-face ((t (:bold t :foreground "white"))))
+ (term-white-face ((t (:foreground "white"))))
+ (term-white-inv-face ((t (nil))))
+ (term-white-ul-face ((t (:underline t :foreground "white"))))
+ (term-whitebg ((t (:background "white"))))
+ (term-yellow ((t (:foreground "yellow"))))
+ (term-yellow-bold-face ((t (:bold t :foreground "yellow"))))
+ (term-yellow-face ((t (:foreground "yellow"))))
+ (term-yellow-inv-face ((t (:background "yellow"))))
+ (term-yellow-ul-face ((t (:underline t :foreground "yellow"))))
+ (term-yellowbg ((t (:background "yellow"))))
+ (text-cursor ((t (:background "red" :foreground "black"))))
+ (tool-bar ((t (:background "grey75" :foreground "black"))))
+ (toolbar ((t (:background "Gray80" :foreground "black"))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (nil))))
+ (vcursor ((t (:underline t :background "cyan" :foreground "blue"))))
+ (vertical-divider ((t (:background "Gray80" :foreground "black"))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red"))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange"))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:underline t :foreground "Blue"))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:underline t :foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:underline t :foreground "ForestGreen"))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:underline t :foreground "Brown"))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:underline t :foreground "Grey50"))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (white ((t (:foreground "white"))))
+ (widget ((t (:size "12" :background "Gray80" :foreground "black"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (nil))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (x-face ((t (:bold t :background "wheat" :foreground "black"))))
+ (xrdb-option-name-face ((t (:bold t :foreground "yellow"))))
+ (xrdb-option-value-face ((t (:bold t :foreground "magenta"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "white" :foreground "black")))))))
+
+(defun color-theme-shaman ()
+ "Color theme by shaman, created 2002-11-11."
+ (interactive)
+ (color-theme-install
+ '(color-theme-shaman
+ ((background-color . "#456345")
+ (background-mode . dark)
+ (background-toolbar-color . "#cf3ccf3ccf3c")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#79e77df779e7")
+ (foreground-color . "White")
+ (top-toolbar-shadow-color . "#f7defbeef7de"))
+ ((buffers-tab-face . buffers-tab))
+ (default ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t :size "12"))))
+ (bold-italic ((t (:italic t :bold t :size "12"))))
+ (border-glyph ((t (nil))))
+ (buffers-tab ((t (:background "Gray80" :foreground "black"))))
+ (font-lock-builtin-face ((t (:foreground "cadetblue2"))))
+ (font-lock-comment-face ((t (:foreground "gray80"))))
+ (font-lock-constant-face ((t (:foreground "steelblue1"))))
+ (font-lock-doc-face ((t (:foreground "light coral"))))
+ (font-lock-doc-string-face ((t (:foreground "light coral"))))
+ (font-lock-function-name-face ((t (:foreground "aquamarine"))))
+ (font-lock-keyword-face ((t (:foreground "cyan"))))
+ (font-lock-preprocessor-face ((t (:foreground "steelblue1"))))
+ (font-lock-reference-face ((t (:foreground "cadetblue2"))))
+ (font-lock-string-face ((t (:foreground "tan"))))
+ (font-lock-type-face ((t (:foreground "wheat"))))
+ (font-lock-variable-name-face ((t (:foreground "cyan3"))))
+ (font-lock-warning-face ((t (:bold t :size "12" :foreground "Pink"))))
+ (fringe ((t (nil))))
+ (gnus-x-face ((t (:background "white" :foreground "black"))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75" :foreground "black"))))
+ (gui-element ((t (:size "12" :background "Gray80" :foreground "black"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (isearch ((t (:background "paleturquoise"))))
+ (isearch-secondary ((t (:foreground "red3"))))
+ (italic ((t (:italic t :size "12"))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68"))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:bold t :foreground "green4"))))
+ (message-header-name-face ((t (:foreground "DarkGreen"))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "yellow"))))
+ (message-header-other-face ((t (:foreground "#b00000"))))
+ (message-header-subject-face ((t (:foreground "green3"))))
+ (message-header-to-face ((t (:bold t :foreground "green2"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "blue3"))))
+ (mode-line ((t (:background "Gray80" :foreground "black"))))
+ (modeline ((t (:background "Gray80" :foreground "black"))))
+ (modeline-buffer-id ((t (:background "Gray80" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "Gray80" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "Gray80" :foreground "green4"))))
+ (pointer ((t (:foreground "White"))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "gray65"))))
+ (right-margin ((t (nil))))
+ (rpm-spec-dir-face ((t (:foreground "green"))))
+ (rpm-spec-doc-face ((t (:foreground "magenta"))))
+ (rpm-spec-ghost-face ((t (:foreground "red"))))
+ (rpm-spec-macro-face ((t (:foreground "yellow"))))
+ (rpm-spec-package-face ((t (:foreground "red"))))
+ (rpm-spec-tag-face ((t (:foreground "blue"))))
+ (rpm-spec-var-face ((t (:foreground "maroon"))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (text-cursor ((t (:background "Pink" :foreground "Black"))))
+ (tool-bar ((t (nil))))
+ (toolbar ((t (:background "Gray80" :foreground "black"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (:background "Gray80" :foreground "black"))))
+ (widget ((t (:size "12" :background "Gray80" :foreground "black"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "gray65")))))))
+
+(defun color-theme-emacs-nw ()
+ "Follow emacs21's color-theme, with -nw getting 100% compatibility.
+
+Alex's `color-theme-emacs-21' follows emacs21's theme, but in the
+current scheme of things, that means that when it works on X, it won't
+work in -nw perfectly. The modeline and menuline will have same
+colors as the rest of emacs, which can be particularly disturbing when
+there are multiple windows.
+
+OTOH, `color-theme-emacs-nw' follows emacs21's theme but the goal is
+100% -nw compatibility, and in X; we shall try for decent color
+scheme, and as much compability default emacs21's X as possble.
+Bugs to deego@gnufans.org.
+
+TODO: Try to make this theme relative to color-theme-emacs-21 rather
+than absolute, viz: call that first and then tweak minor stuff."
+ (interactive)
+ (color-theme-install
+ '(color-theme-emacs-nw
+ ((background-color . "white")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "black")
+ (mouse-color . "black"))
+ ((Man-overstrike-face . bold)
+ (Man-underline-face . underline)
+ (cperl-here-face . font-lock-string-face)
+ (cperl-invalid-face . underline)
+ (cperl-pod-face . font-lock-comment-face)
+ (cperl-pod-head-face . font-lock-variable-name-face)
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-cite-attribution-face . gnus-cite-attribution-face)
+ (gnus-mouse-face . highlight)
+ (gnus-signature-face . gnus-signature-face)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (help-highlight-face . underline)
+ (idlwave-class-arrow-face . bold)
+ (idlwave-shell-breakpoint-face . idlwave-shell-bp-face)
+ (idlwave-shell-expression-face . secondary-selection)
+ (idlwave-shell-stop-line-face . highlight)
+ (ispell-highlight-face . highlight)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight)
+ (viper-insert-state-cursor-color . "Green")
+ (viper-replace-overlay-cursor-color . "Red")
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (Info-title-1-face ((t (:bold t :weight bold :family "helv" :height 1.728))))
+ (Info-title-2-face ((t (:bold t :family "helv" :weight bold :height 1.44))))
+ (Info-title-3-face ((t (:bold t :weight bold :family "helv" :height 1.2))))
+ (Info-title-4-face ((t (:bold t :family "helv" :weight bold))))
+ (antlr-font-lock-keyword-face ((t (:bold t :foreground "black" :weight bold))))
+ (antlr-font-lock-literal-face ((t (:bold t :foreground "brown4" :weight bold))))
+ (antlr-font-lock-ruledef-face ((t (:bold t :foreground "blue" :weight bold))))
+ (antlr-font-lock-ruleref-face ((t (:foreground "blue4"))))
+ (antlr-font-lock-tokendef-face ((t (:bold t :foreground "blue" :weight bold))))
+ (antlr-font-lock-tokenref-face ((t (:foreground "orange4"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (calendar-today-face ((t (:underline t))))
+ (change-log-acknowledgement-face ((t (:foreground "Firebrick"))))
+ (change-log-conditionals-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-date-face ((t (:foreground "RosyBrown"))))
+ (change-log-email-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-file-face ((t (:foreground "Blue"))))
+ (change-log-function-face ((t (:foreground "DarkGoldenrod"))))
+ (change-log-list-face ((t (:foreground "Purple"))))
+ (change-log-name-face ((t (:foreground "CadetBlue"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "dark blue"))))
+ (cperl-array-face ((t (:bold t :background "lightyellow2" :foreground "Blue" :weight bold))))
+ (cperl-hash-face ((t (:italic t :bold t :background "lightyellow2" :foreground "Red" :slant italic :weight bold))))
+ (cperl-nonoverridable-face ((t (:foreground "chartreuse3"))))
+ (cursor ((t (:background "black"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "gray85"))))
+ (custom-comment-tag-face ((t (:foreground "blue4"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:bold t :foreground "blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "red" :weight bold :height 1.2))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "blue" :weight bold :height 1.2))))
+ (cvs-filename-face ((t (:foreground "blue4"))))
+ (cvs-handled-face ((t (:foreground "pink"))))
+ (cvs-header-face ((t (:bold t :foreground "blue4" :weight bold))))
+ (cvs-marked-face ((t (:bold t :foreground "green3" :weight bold))))
+ (cvs-msg-face ((t (:italic t :slant italic))))
+ (cvs-need-action-face ((t (:foreground "orange"))))
+ (cvs-unknown-face ((t (:foreground "red"))))
+ (diary-face ((t (:foreground "red"))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (:foreground "grey50"))))
+ (diff-file-header-face ((t (:bold t :background "grey70" :weight bold))))
+ (diff-function-face ((t (:foreground "grey50"))))
+ (diff-header-face ((t (:background "grey85"))))
+ (diff-hunk-header-face ((t (:background "grey85"))))
+ (diff-index-face ((t (:bold t :weight bold :background "grey70"))))
+ (diff-nonexistent-face ((t (:bold t :weight bold :background "grey70"))))
+ (diff-removed-face ((t (nil))))
+ (dired-face-boring ((t (:foreground "RosyBrown"))))
+ (dired-face-directory ((t (:foreground "Blue"))))
+ (dired-face-executable ((t (nil))))
+ (dired-face-flagged ((t (:foreground "Red" :weight bold))))
+ (dired-face-marked ((t (:foreground "Red" :weight bold))))
+ (dired-face-permissions ((t (nil))))
+ (dired-face-setuid ((t (nil))))
+ (dired-face-socket ((t (nil))))
+ (dired-face-symlink ((t (:foreground "Purple"))))
+ (ebrowse-default-face ((t (nil))))
+ (ebrowse-file-name-face ((t (:italic t :slant italic))))
+ (ebrowse-member-attribute-face ((t (:foreground "red"))))
+ (ebrowse-member-class-face ((t (:foreground "purple"))))
+ (ebrowse-progress-face ((t (:background "blue"))))
+ (ebrowse-root-class-face ((t (:bold t :foreground "blue" :weight bold))))
+ (ebrowse-tree-mark-face ((t (:foreground "red"))))
+ (ediff-current-diff-face-A ((t (:background "pale green" :foreground "firebrick"))))
+ (ediff-current-diff-face-Ancestor ((t (:background "VioletRed" :foreground "Black"))))
+ (ediff-current-diff-face-B ((t (:background "Yellow" :foreground "DarkOrchid"))))
+ (ediff-current-diff-face-C ((t (:background "Pink" :foreground "Navy"))))
+ (ediff-even-diff-face-A ((t (:background "light grey" :foreground "Black"))))
+ (ediff-even-diff-face-Ancestor ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-B ((t (:background "Grey" :foreground "White"))))
+ (ediff-even-diff-face-C ((t (:background "light grey" :foreground "Black"))))
+ (ediff-fine-diff-face-A ((t (:background "sky blue" :foreground "Navy"))))
+ (ediff-fine-diff-face-Ancestor ((t (:background "Green" :foreground "Black"))))
+ (ediff-fine-diff-face-B ((t (:background "cyan" :foreground "Black"))))
+ (ediff-fine-diff-face-C ((t (:background "Turquoise" :foreground "Black"))))
+ (ediff-odd-diff-face-A ((t (:background "Grey" :foreground "White"))))
+ (ediff-odd-diff-face-Ancestor ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-B ((t (:background "light grey" :foreground "Black"))))
+ (ediff-odd-diff-face-C ((t (:background "Grey" :foreground "White"))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "Orchid" :weight bold))))
+ (eshell-ls-backup-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-clutter-face ((t (:bold t :foreground "OrangeRed" :weight bold))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "Blue" :weight bold))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "ForestGreen" :weight bold))))
+ (eshell-ls-missing-face ((t (:bold t :foreground "Red" :weight bold))))
+ (eshell-ls-product-face ((t (:foreground "OrangeRed"))))
+ (eshell-ls-readonly-face ((t (:foreground "Brown"))))
+ (eshell-ls-special-face ((t (:bold t :foreground "Magenta" :weight bold))))
+ (eshell-ls-symlink-face ((t (:bold t :foreground "Dark Cyan" :weight bold))))
+ (eshell-ls-unreadable-face ((t (:foreground "Grey30"))))
+ (eshell-prompt-face ((t (:bold t :foreground "Red" :weight bold))))
+ (eshell-test-failed-face ((t (:bold t :foreground "OrangeRed" :weight bold))))
+ (eshell-test-ok-face ((t (:bold t :foreground "Green" :weight bold))))
+ (excerpt ((t (:italic t :slant italic))))
+ (fixed ((t (:bold t :weight bold))))
+ (fixed-pitch ((t (:family "courier"))))
+ (flyspell-duplicate-face ((t (:bold t :foreground "Gold3" :underline t :weight bold))))
+ (flyspell-incorrect-face ((t (:bold t :foreground "OrangeRed" :underline t :weight bold))))
+ (font-lock-builtin-face ((t (:foreground "Orchid"))))
+ (font-lock-comment-face ((t (:foreground "Firebrick"))))
+ (font-lock-constant-face ((t (:foreground "CadetBlue"))))
+ (font-lock-doc-face ((t (:foreground "RosyBrown"))))
+ (font-lock-doc-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-function-name-face ((t (:foreground "Blue"))))
+ (font-lock-keyword-face ((t (:foreground "Purple"))))
+ (font-lock-preprocessor-face ((t (:foreground "CadetBlue"))))
+ (font-lock-reference-face ((t (:foreground "Orchid"))))
+ (font-lock-string-face ((t (:foreground "RosyBrown"))))
+ (font-lock-type-face ((t (:foreground "ForestGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "DarkGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red" :weight bold))))
+ (fringe ((t (:background "grey95"))))
+ (gnus-cite-attribution-face ((t (:italic t :slant italic))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t :weight bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t :slant italic))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t :weight bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :weight bold))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t :weight bold))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t :weight bold))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen" :weight bold))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4" :slant italic))))
+ (gnus-header-from-face ((t (:foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:italic t :foreground "MidnightBlue" :slant italic))))
+ (gnus-header-subject-face ((t (:foreground "red4"))))
+ (gnus-signature-face ((t (:italic t :slant italic))))
+ (gnus-splash-face ((t (:foreground "Brown"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "firebrick" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue" :slant italic))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen" :slant italic))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick" :slant italic))))
+ (gnus-summary-low-unread-face ((t (:italic t :slant italic))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "firebrick"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :background "grey90" :foreground "grey20" :box nil))))
+ (hi-black-b ((t (:bold t :weight bold))))
+ (hi-black-hb ((t (:bold t :family "helv" :weight bold :height 1.67))))
+ (hi-blue ((t (:background "light blue"))))
+ (hi-blue-b ((t (:bold t :foreground "blue" :weight bold))))
+ (hi-green ((t (:background "green"))))
+ (hi-green-b ((t (:bold t :foreground "green" :weight bold))))
+ (hi-pink ((t (:background "pink"))))
+ (hi-red-b ((t (:bold t :foreground "red" :weight bold))))
+ (hi-yellow ((t (:background "yellow"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (highlight-changes-delete-face ((t (:foreground "red" :underline t))))
+ (highlight-changes-face ((t (:foreground "red"))))
+ (holiday-face ((t (:background "pink"))))
+ (idlwave-help-link-face ((t (:foreground "Blue"))))
+ (idlwave-shell-bp-face ((t (:background "Pink" :foreground "Black"))))
+ (info-header-node ((t (:italic t :bold t :weight bold :slant italic :foreground "brown"))))
+ (info-header-xref ((t (:bold t :weight bold :foreground "magenta4"))))
+ (info-menu-5 ((t (:foreground "red1"))))
+ (info-menu-header ((t (:bold t :family "helv" :weight bold))))
+ (info-node ((t (:italic t :bold t :foreground "brown" :slant italic :weight bold))))
+ (info-xref ((t (:bold t :foreground "magenta4" :weight bold))))
+ (isearch ((t (:background "magenta4" :foreground "lightskyblue1"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t :slant italic))))
+ (log-view-file-face ((t (:bold t :background "grey70" :weight bold))))
+ (log-view-message-face ((t (:background "grey85"))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (menu ((t (:background "grey50" :foreground "white" :box (:line-width -1 :style released-button)))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue" :weight bold))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (mode-line ((t (:background "grey50" :foreground "white" :box (:line-width -1 :style released-button)))))
+ (modeline ((t (:background "grey50" :foreground "white" :box (:line-width -1 :style released-button)))))
+ (modeline-buffer-id ((t (:bold t :background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (modeline-mousable ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (modeline-mousable-minor-mode ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (mouse ((t (:background "black"))))
+ (primary-selection ((t (:background "lightgoldenrod2"))))
+ (reb-match-0 ((t (:background "lightblue"))))
+ (reb-match-1 ((t (:background "aquamarine"))))
+ (reb-match-2 ((t (:background "springgreen"))))
+ (reb-match-3 ((t (:background "yellow"))))
+ (region ((t (:background "lightgoldenrod2"))))
+ (scroll-bar ((t (:background "grey75"))))
+ (secondary-selection ((t (:background "yellow"))))
+ (sh-heredoc-face ((t (:foreground "tan"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (show-tabs-space-face ((t (:foreground "yellow"))))
+ (show-tabs-tab-face ((t (:foreground "red"))))
+ (smerge-base-face ((t (:foreground "red"))))
+ (smerge-markers-face ((t (:background "grey85"))))
+ (smerge-mine-face ((t (:foreground "blue"))))
+ (smerge-other-face ((t (:foreground "darkgreen"))))
+ (speedbar-button-face ((t (:foreground "green4"))))
+ (speedbar-directory-face ((t (:foreground "blue4"))))
+ (speedbar-file-face ((t (:foreground "cyan4"))))
+ (speedbar-highlight-face ((t (:background "green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-tag-face ((t (:foreground "brown"))))
+ (strokes-char-face ((t (:background "lightgray"))))
+ (term-black ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-blackbg ((t (:stipple nil :background "black" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-blue ((t (:stipple nil :background "white" :foreground "blue" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-bluebg ((t (:stipple nil :background "blue" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-bold ((t (:bold t :stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight bold :width normal :family "adobe-courier"))))
+ (term-cyan ((t (:stipple nil :background "white" :foreground "cyan" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-cyanbg ((t (:stipple nil :background "cyan" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-bg ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-bg-inv ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-fg ((t (:stipple nil :background "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-default-fg-inv ((t (:stipple nil :background "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-green ((t (:stipple nil :background "white" :foreground "green" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-greenbg ((t (:stipple nil :background "green" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-invisible ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-invisible-inv ((t (:stipple nil :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-magenta ((t (:stipple nil :background "white" :foreground "magenta" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-magentabg ((t (:stipple nil :background "magenta" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-red ((t (:stipple nil :background "white" :foreground "red" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-redbg ((t (:stipple nil :background "red" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-underline ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline t :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-white ((t (:stipple nil :background "white" :foreground "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-whitebg ((t (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-yellow ((t (:stipple nil :background "white" :foreground "yellow" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (term-yellowbg ((t (:stipple nil :background "yellow" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :width normal :family "adobe-courier"))))
+ (tex-math-face ((t (:foreground "RosyBrown"))))
+ (texinfo-heading-face ((t (:foreground "Blue"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (vcursor ((t (:background "cyan" :foreground "blue" :underline t))))
+ (vhdl-font-lock-attribute-face ((t (:foreground "Orchid"))))
+ (vhdl-font-lock-directive-face ((t (:foreground "CadetBlue"))))
+ (vhdl-font-lock-enumvalue-face ((t (:foreground "Gold4"))))
+ (vhdl-font-lock-function-face ((t (:foreground "Orchid4"))))
+ (vhdl-font-lock-prompt-face ((t (:bold t :foreground "Red" :weight bold))))
+ (vhdl-font-lock-reserved-words-face ((t (:bold t :foreground "Orange" :weight bold))))
+ (vhdl-font-lock-translate-off-face ((t (:background "LightGray"))))
+ (vhdl-speedbar-architecture-face ((t (:foreground "Blue"))))
+ (vhdl-speedbar-architecture-selected-face ((t (:foreground "Blue" :underline t))))
+ (vhdl-speedbar-configuration-face ((t (:foreground "DarkGoldenrod"))))
+ (vhdl-speedbar-configuration-selected-face ((t (:foreground "DarkGoldenrod" :underline t))))
+ (vhdl-speedbar-entity-face ((t (:foreground "ForestGreen"))))
+ (vhdl-speedbar-entity-selected-face ((t (:foreground "ForestGreen" :underline t))))
+ (vhdl-speedbar-instantiation-face ((t (:foreground "Brown"))))
+ (vhdl-speedbar-instantiation-selected-face ((t (:foreground "Brown" :underline t))))
+ (vhdl-speedbar-package-face ((t (:foreground "Grey50"))))
+ (vhdl-speedbar-package-selected-face ((t (:foreground "Grey50" :underline t))))
+ (viper-minibuffer-emacs-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-minibuffer-insert-face ((t (:background "pink" :foreground "Black"))))
+ (viper-minibuffer-vi-face ((t (:background "grey" :foreground "DarkGreen"))))
+ (viper-replace-overlay-face ((t (:background "darkseagreen2" :foreground "Black"))))
+ (viper-search-face ((t (:background "khaki" :foreground "Black"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85"))))
+ (woman-addition-face ((t (:foreground "orange"))))
+ (woman-bold-face ((t (:bold t :foreground "blue" :weight bold))))
+ (woman-italic-face ((t (:italic t :foreground "red" :underline t :slant italic))))
+ (woman-unknown-face ((t (:foreground "brown"))))
+ (zmacs-region ((t (:background "lightgoldenrod2")))))))
+
+(defun color-theme-late-night ()
+ "Color theme by Alex Schroeder, created 2003-08-07.
+This theme is for use late at night, with only little light in the room.
+The goal was to make something as dark and subtle as the text console in
+its default 80x25 state -- dark grey on black."
+ (interactive)
+ (let ((color-theme-is-cumulative t))
+ (color-theme-dark-erc)
+ (color-theme-dark-gnus)
+ ;; (color-theme-dark-diff)
+ ;; (color-theme-dark-eshell)
+ (color-theme-dark-info)
+ (color-theme-dark-font-lock)
+ (color-theme-install
+ '(color-theme-late-night
+ ((background-color . "#000")
+ (background-mode . dark)
+ (background-toolbar-color . "#000")
+ (border-color . "#000")
+ (bottom-toolbar-shadow-color . "#000")
+ (cursor-color . "#888")
+ (foreground-color . "#666")
+ (top-toolbar-shadow-color . "#111"))
+ (default ((t (nil))))
+ (bold ((t (:bold t))))
+ (button ((t (:bold t))))
+ (custom-button-face ((t (:bold t :foreground "#999"))))
+ (fringe ((t (:background "#111" :foreground "#444"))))
+ (header-line ((t (:background "#333" :foreground "#000"))))
+ (highlight ((t (:background "dark slate blue" :foreground "light blue"))))
+ (holiday-face ((t (:background "#000" :foreground "#777"))))
+ (isearch ((t (:foreground "pink" :background "red"))))
+ (isearch-lazy-highlight-face ((t (:foreground "red"))))
+ (italic ((t (:bold t))))
+ (menu ((t (:background "#111" :foreground "#444"))))
+ (minibuffer-prompt ((t (:foreground "555"))))
+ (modeline ((t (:background "#111" :foreground "#444"))))
+ (mode-line-inactive ((t (:background "#000" :foreground "#444"))))
+ (modeline-buffer-id ((t (:background "#000" :foreground "#555"))))
+ (modeline-mousable ((t (:background "#000" :foreground "#555"))))
+ (modeline-mousable-minor-mode ((t (:background "#000" :foreground "#555"))))
+ (region ((t (:background "dark cyan" :foreground "cyan"))))
+ (secondary-selection ((t (:background "Aquamarine" :foreground "SlateBlue"))))
+ (show-paren-match-face ((t (:foreground "white" :background "light slate blue"))))
+ (show-paren-mismatch-face ((t (:foreground "white" :background "red"))))
+ (tool-bar ((t (:background "#111" :foreground "#777"))))
+ (tooltip ((t (:background "#333" :foreground "#777"))))
+ (underline ((t (:bold t))))
+ (variable-pitch ((t (nil))))
+ (widget-button-face ((t (:bold t :foreground "#888"))))
+ (widget-field-face ((t (:bold t :foreground "#999"))))))))
+
+(defun color-theme-clarity ()
+ "White on black color theme by Richard Wellum, created 2003-01-16."
+ (interactive)
+ (color-theme-install
+ '(color-theme-clarity
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "white")
+ (cursor-color . "yellow")
+ (foreground-color . "white")
+ (mouse-color . "white"))
+ ((CUA-mode-global-mark-cursor-color . "cyan")
+ (CUA-mode-normal-cursor-color . "yellow")
+ (CUA-mode-overwrite-cursor-color . "red")
+ (CUA-mode-read-only-cursor-color . "green")
+ (help-highlight-face . underline)
+ (ibuffer-dired-buffer-face . font-lock-function-name-face)
+ (ibuffer-help-buffer-face . font-lock-comment-face)
+ (ibuffer-hidden-buffer-face . font-lock-warning-face)
+ (ibuffer-occur-match-face . font-lock-warning-face)
+ (ibuffer-read-only-buffer-face . font-lock-type-face)
+ (ibuffer-special-buffer-face . font-lock-keyword-face)
+ (ibuffer-title-face . font-lock-type-face)
+ (list-matching-lines-face . bold)
+ (ps-line-number-color . "black")
+ (ps-zebra-color . 0.95)
+ (tags-tag-face . default)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (nil))))
+ (CUA-global-mark-face ((t (:background "cyan" :foreground "black"))))
+ (CUA-rectangle-face ((t (:background "maroon" :foreground "white"))))
+ (CUA-rectangle-noselect-face ((t (:background "dimgray" :foreground "white"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "white"))))
+ (clearcase-dired-checkedout-face ((t (:foreground "red"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cursor ((t (:background "yellow"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (flash-paren-face-off ((t (nil))))
+ (flash-paren-face-on ((t (nil))))
+ (flash-paren-face-region ((t (nil))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "OrangeRed"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-doc-face ((t (:foreground "LightSalmon"))))
+ (font-lock-function-name-face ((t (:foreground "LightSkyBlue"))))
+ (font-lock-keyword-face ((t (:foreground "Cyan"))))
+ (font-lock-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-type-face ((t (:foreground "PaleGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink" :weight bold))))
+ (fringe ((t (:background "grey10"))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :foreground "grey20" :background "grey90" :box nil))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (ibuffer-deletion-face ((t (:foreground "red"))))
+ (ibuffer-marked-face ((t (:foreground "green"))))
+ (isearch ((t (:background "palevioletred2" :foreground "brown4"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (menu ((t (nil))))
+ (mode-line ((t (:foreground "yellow" :background "darkslateblue" :box (:line-width -1 :style released-button)))))
+ (mouse ((t (:background "white"))))
+ (region ((t (:background "blue"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "darkslateblue"))))
+ (show-block-face1 ((t (:background "gray10"))))
+ (show-block-face2 ((t (:background "gray15"))))
+ (show-block-face3 ((t (:background "gray20"))))
+ (show-block-face4 ((t (:background "gray25"))))
+ (show-block-face5 ((t (:background "gray30"))))
+ (show-block-face6 ((t (:background "gray35"))))
+ (show-block-face7 ((t (:background "gray40"))))
+ (show-block-face8 ((t (:background "gray45"))))
+ (show-block-face9 ((t (:background "gray50"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray")))))))
+
+(defun color-theme-andreas ()
+ "Color theme by Andreas Busch, created 2003-02-06."
+ (interactive)
+ (color-theme-install
+ '(color-theme-andreas
+ ((background-mode . light)
+ (background-color . "white")
+ (background-toolbar-color . "#cccccccccccc")
+ (border-color . "#000000000000")
+ (bottom-toolbar-shadow-color . "#7a7a7a7a7a7a")
+ (foreground-color . "black")
+ (top-toolbar-shadow-color . "#f5f5f5f5f5f5"))
+ ((gnus-mouse-face . highlight)
+ (ispell-highlight-face . highlight))
+ (default ((t (nil))))
+ (OrangeRed ((t (nil))))
+ (blue ((t (:foreground "blue"))))
+ (bold ((t (:bold t))))
+ (bold-italic ((t (:italic t :bold t))))
+ (border-glyph ((t (nil))))
+ (calendar-today-face ((t (:underline t))))
+ (color-mode-face-@ ((t (:foreground "orange"))))
+ (color-mode-face-a ((t (:foreground "blue"))))
+ (color-mode-face-b ((t (:foreground "red"))))
+ (color-mode-face-c ((t (:foreground "green3"))))
+ (color-mode-face-d ((t (:background "red" :foreground "white"))))
+ (color-mode-face-e ((t (:background "orange" :foreground "blue"))))
+ (color-mode-face-f ((t (:background "blue" :foreground "yellow"))))
+ (color-mode-face-g ((t (:background "lightblue" :foreground "brown"))))
+ (color-mode-face-h ((t (:background "brown" :foreground "white"))))
+ (custom-button-face ((t (:bold t))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:underline t :foreground "blue"))))
+ (custom-group-tag-face-1 ((t (:underline t :foreground "red"))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "dark green"))))
+ (custom-variable-button-face ((t (:underline t :bold t :background "gray90"))))
+ (custom-variable-tag-face ((t (:underline t :background "gray95" :foreground "blue"))))
+ (diary-face ((t (:foreground "red"))))
+ (display-time-mail-balloon-enhance-face ((t (:background "orange"))))
+ (display-time-mail-balloon-gnus-group-face ((t (:foreground "blue"))))
+ (display-time-time-balloon-face ((t (:foreground "red"))))
+ (emacs-wiki-bad-link-face ((t (:bold t :foreground "red"))))
+ (emacs-wiki-link-face ((t (:bold t :foreground "green"))))
+ (font-lock-comment-face ((t (:foreground "orange1"))))
+ (font-lock-doc-string-face ((t (:foreground "green4"))))
+ (font-lock-function-name-face ((t (:foreground "blue3"))))
+ (font-lock-keyword-face ((t (:foreground "red1"))))
+ (font-lock-preprocessor-face ((t (:foreground "blue3"))))
+ (font-lock-reference-face ((t (:foreground "red3"))))
+ (font-lock-string-face ((t (:foreground "green4"))))
+ (font-lock-type-face ((t (:foreground "#6920ac"))))
+ (font-lock-variable-name-face ((t (:foreground "blue3"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red"))))
+ (gnu-cite-face-3 ((t (nil))))
+ (gnu-cite-face-4 ((t (nil))))
+ (gnus-cite-attribution-face ((t (:underline t))))
+ (gnus-cite-face-1 ((t (:foreground "MidnightBlue"))))
+ (gnus-cite-face-10 ((t (:foreground "medium purple"))))
+ (gnus-cite-face-11 ((t (:foreground "turquoise"))))
+ (gnus-cite-face-2 ((t (:foreground "firebrick"))))
+ (gnus-cite-face-3 ((t (:foreground "dark green"))))
+ (gnus-cite-face-4 ((t (:foreground "OrangeRed"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "dark violet"))))
+ (gnus-cite-face-7 ((t (:foreground "SteelBlue4"))))
+ (gnus-cite-face-8 ((t (:foreground "magenta"))))
+ (gnus-cite-face-9 ((t (:foreground "violet"))))
+ (gnus-emphasis-bold ((t (:bold t))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t))))
+ (gnus-emphasis-italic ((t (:italic t))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:underline t :bold t))))
+ (gnus-emphasis-underline-bold-italic ((t (:underline t :italic t :bold t))))
+ (gnus-emphasis-underline-italic ((t (:underline t :italic t))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "DeepPink3"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "DeepPink3"))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "HotPink3"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "HotPink3"))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "magenta4"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "magenta4"))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "DeepPink4"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "DeepPink4"))))
+ (gnus-group-news-1-empty-face ((t (:foreground "ForestGreen"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "ForestGreen"))))
+ (gnus-group-news-2-empty-face ((t (:foreground "CadetBlue4"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "CadetBlue4"))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t))))
+ (gnus-group-news-low-empty-face ((t (:foreground "DarkGreen"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-header-content-face ((t (:italic t :foreground "indianred4"))))
+ (gnus-header-from-face ((t (:bold t :foreground "red3"))))
+ (gnus-header-name-face ((t (:foreground "maroon"))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "MidnightBlue"))))
+ (gnus-header-subject-face ((t (:bold t :foreground "red4"))))
+ (gnus-splash-face ((t (:foreground "red"))))
+ (gnus-summary-cancelled-face ((t (:background "black" :foreground "yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "RoyalBlue"))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "DarkGreen"))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "DarkRed"))))
+ (gnus-summary-high-unread-face ((t (:bold t))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "RoyalBlue"))))
+ (gnus-summary-low-read-face ((t (:italic t :foreground "DarkGreen"))))
+ (gnus-summary-low-ticked-face ((t (:italic t :foreground "firebrick"))))
+ (gnus-summary-low-unread-face ((t (:italic t))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "RoyalBlue"))))
+ (gnus-summary-normal-read-face ((t (:foreground "DarkGreen"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "Red"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (gnus-x-face ((t (nil))))
+ (green ((t (:foreground "green"))))
+ (gui-button-face ((t (:background "grey75"))))
+ (gui-element ((t (:background "Gray80"))))
+ (highlight ((t (nil))))
+ (holiday-face ((t (:background "pink"))))
+ (hyper-apropos-documentation ((t (:foreground "darkred"))))
+ (hyper-apropos-heading ((t (:bold t))))
+ (hyper-apropos-hyperlink ((t (:foreground "blue4"))))
+ (hyper-apropos-major-heading ((t (:bold t))))
+ (hyper-apropos-section-heading ((t (:italic t :bold t))))
+ (hyper-apropos-warning ((t (:bold t :foreground "red"))))
+ (info-node ((t (:italic t :bold t))))
+ (info-xref ((t (:bold t))))
+ (isearch ((t (:background "yellow" :foreground "red"))))
+ (italic ((t (:italic t))))
+ (kai-gnus-cite-face-1 ((t (:foreground "LightCyan4"))))
+ (kai-gnus-cite-face-2 ((t (:foreground "LightSkyBlue2"))))
+ (kai-gnus-cite-face-3 ((t (:foreground "DodgerBlue3"))))
+ (kai-gnus-group-mail-face ((t (:foreground "darkslategrey"))))
+ (kai-gnus-group-nonempty-mail-face ((t (:foreground "DarkRed"))))
+ (kai-gnus-group-starred-face ((t (:foreground "grey50"))))
+ (left-margin ((t (nil))))
+ (list-mode-item-selected ((t (:background "gray68"))))
+ (message-cited-text ((t (:italic t))))
+ (message-cited-text-face ((t (:foreground "red"))))
+ (message-header-cc-face ((t (:foreground "MidnightBlue"))))
+ (message-header-contents ((t (:italic t))))
+ (message-header-name-face ((t (:foreground "cornflower blue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "blue4"))))
+ (message-header-other-face ((t (:foreground "steel blue"))))
+ (message-header-subject-face ((t (:bold t :foreground "navy blue"))))
+ (message-header-to-face ((t (:bold t :foreground "MidnightBlue"))))
+ (message-header-xheader-face ((t (:foreground "blue"))))
+ (message-headers ((t (:bold t))))
+ (message-highlighted-header-contents ((t (:italic t :bold t))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "brown"))))
+ (modeline ((t (:background "Gray75" :foreground "Black"))))
+ (modeline-buffer-id ((t (:background "Gray75" :foreground "blue4"))))
+ (modeline-mousable ((t (:background "Gray75" :foreground "firebrick"))))
+ (modeline-mousable-minor-mode ((t (:background "Gray75" :foreground "green4"))))
+ (paren-blink-off ((t (:foreground "gray80"))))
+ (paren-match ((t (:background "red" :foreground "white"))))
+ (paren-mismatch ((t (:background "DeepPink"))))
+ (pointer ((t (:foreground "blue"))))
+ (primary-selection ((t (:background "gray65"))))
+ (red ((t (:foreground "red"))))
+ (region ((t (:background "gray75"))))
+ (right-margin ((t (nil))))
+ (secondary-selection ((t (:background "paleturquoise"))))
+ (text-cursor ((t (:background "red" :foreground "LightYellow1"))))
+ (toolbar ((t (:background "Gray80"))))
+ (underline ((t (:underline t))))
+ (vertical-divider ((t (:background "Gray80"))))
+ (widget-button-face ((t (:bold t))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (x-face ((t (:background "white"))))
+ (yellow ((t (:foreground "yellow"))))
+ (zmacs-region ((t (:background "gray65" :foreground "yellow")))))))
+
+(defun color-theme-charcoal-black ()
+ "Color theme by Lars Chr. Hausmann, created 2003-03-24."
+ (interactive)
+ (color-theme-install
+ '(color-theme-charcoal-black
+ ((background-color . "Grey15")
+ (background-mode . dark)
+ (border-color . "Grey")
+ (cursor-color . "Grey")
+ (foreground-color . "Grey")
+ (mouse-color . "Grey"))
+ ((display-time-mail-face . mode-line)
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-mouse-face . highlight)
+ (gnus-server-agent-face . gnus-server-agent-face)
+ (gnus-server-closed-face . gnus-server-closed-face)
+ (gnus-server-denied-face . gnus-server-denied-face)
+ (gnus-server-offline-face . gnus-server-offline-face)
+ (gnus-server-opened-face . gnus-server-opened-face)
+ (gnus-signature-face . gnus-signature-face)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (mime-button-face . bold)
+ (mime-button-mouse-face . highlight)
+ (sgml-set-face . t)
+ (tags-tag-face . default)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "Grey15" :foreground "Grey" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 87 :width semi-condensed :family "misc-fixed"))))
+ (Info-title-1-face ((t (:bold t :weight bold :family "helv" :height 1.728))))
+ (Info-title-2-face ((t (:bold t :family "helv" :weight bold :height 1.44))))
+ (Info-title-3-face ((t (:bold t :weight bold :family "helv" :height 1.2))))
+ (Info-title-4-face ((t (:bold t :family "helv" :weight bold))))
+ (bg:erc-color-face0 ((t (nil))))
+ (bg:erc-color-face1 ((t (nil))))
+ (bg:erc-color-face10 ((t (nil))))
+ (bg:erc-color-face11 ((t (nil))))
+ (bg:erc-color-face12 ((t (nil))))
+ (bg:erc-color-face13 ((t (nil))))
+ (bg:erc-color-face14 ((t (nil))))
+ (bg:erc-color-face15 ((t (nil))))
+ (bg:erc-color-face2 ((t (nil))))
+ (bg:erc-color-face3 ((t (nil))))
+ (bg:erc-color-face4 ((t (nil))))
+ (bg:erc-color-face5 ((t (nil))))
+ (bg:erc-color-face6 ((t (nil))))
+ (bg:erc-color-face7 ((t (nil))))
+ (bg:erc-color-face8 ((t (nil))))
+ (bg:erc-color-face9 ((t (nil))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:bold t :foreground "beige" :weight bold))))
+ (border ((t (:background "Grey"))))
+ (calendar-today-face ((t (:underline t))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cperl-array-face ((t (:bold t :foreground "light salmon" :weight bold))))
+ (cperl-hash-face ((t (:italic t :bold t :foreground "beige" :slant italic :weight bold))))
+ (cperl-nonoverridable-face ((t (:foreground "aquamarine"))))
+ (cursor ((t (:background "Grey"))))
+ (custom-button-face ((t (:foreground "gainsboro"))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "dim gray"))))
+ (custom-comment-tag-face ((t (:foreground "gray80"))))
+ (custom-documentation-face ((t (:foreground "light blue"))))
+ (custom-face-tag-face ((t (:underline t))))
+ (custom-group-tag-face ((t (:bold t :foreground "pale turquoise" :weight bold))))
+ (custom-group-tag-face-1 ((t (:foreground "pale turquoise" :underline t))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "light salmon"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (diary-face ((t (:foreground "red"))))
+ (dired-face-directory ((t (:bold t :foreground "sky blue" :weight bold))))
+ (dired-face-executable ((t (:foreground "green yellow"))))
+ (dired-face-flagged ((t (:foreground "tomato"))))
+ (dired-face-marked ((t (:foreground "light salmon"))))
+ (dired-face-permissions ((t (:foreground "aquamarine"))))
+ (erc-action-face ((t (nil))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "pale green"))))
+ (erc-error-face ((t (:bold t :foreground "IndianRed" :weight bold))))
+ (erc-highlight-face ((t (:bold t :foreground "pale green" :weight bold))))
+ (erc-input-face ((t (:foreground "light blue"))))
+ (erc-inverse-face ((t (:background "steel blue"))))
+ (erc-notice-face ((t (:foreground "light salmon"))))
+ (erc-pal-face ((t (:foreground "pale green"))))
+ (erc-prompt-face ((t (:bold t :foreground "light blue" :weight bold))))
+ (eshell-ls-archive-face ((t (:bold t :foreground "medium purple" :weight bold))))
+ (eshell-ls-backup-face ((t (:foreground "dim gray"))))
+ (eshell-ls-clutter-face ((t (:foreground "dim gray"))))
+ (eshell-ls-directory-face ((t (:bold t :foreground "medium slate blue" :weight bold))))
+ (eshell-ls-executable-face ((t (:bold t :foreground "aquamarine" :weight bold))))
+ (eshell-ls-missing-face ((t (:foreground "black"))))
+ (eshell-ls-picture-face ((t (:foreground "violet"))))
+ (eshell-ls-product-face ((t (:foreground "light steel blue"))))
+ (eshell-ls-readonly-face ((t (:foreground "aquamarine"))))
+ (eshell-ls-special-face ((t (:foreground "gold"))))
+ (eshell-ls-symlink-face ((t (:foreground "white"))))
+ (eshell-ls-unreadable-face ((t (:foreground "dim gray"))))
+ (eshell-prompt-face ((t (:bold t :foreground "light sky blue" :weight bold))))
+ (excerpt ((t (:italic t :slant italic))))
+ (fg:erc-color-face0 ((t (:foreground "white"))))
+ (fg:erc-color-face1 ((t (:foreground "beige"))))
+ (fg:erc-color-face10 ((t (:foreground "pale goldenrod"))))
+ (fg:erc-color-face11 ((t (:foreground "light goldenrod yellow"))))
+ (fg:erc-color-face12 ((t (:foreground "light yellow"))))
+ (fg:erc-color-face13 ((t (:foreground "yellow"))))
+ (fg:erc-color-face14 ((t (:foreground "light goldenrod"))))
+ (fg:erc-color-face15 ((t (:foreground "lime green"))))
+ (fg:erc-color-face2 ((t (:foreground "lemon chiffon"))))
+ (fg:erc-color-face3 ((t (:foreground "light cyan"))))
+ (fg:erc-color-face4 ((t (:foreground "powder blue"))))
+ (fg:erc-color-face5 ((t (:foreground "sky blue"))))
+ (fg:erc-color-face6 ((t (:foreground "dark sea green"))))
+ (fg:erc-color-face7 ((t (:foreground "pale green"))))
+ (fg:erc-color-face8 ((t (:foreground "medium spring green"))))
+ (fg:erc-color-face9 ((t (:foreground "khaki"))))
+ (fixed ((t (:bold t :weight bold))))
+ (fixed-pitch ((t (:family "courier"))))
+ (flyspell-duplicate-face ((t (:bold t :foreground "Gold3" :underline t :weight bold))))
+ (flyspell-incorrect-face ((t (:bold t :foreground "OrangeRed" :underline t :weight bold))))
+ (font-lock-builtin-face ((t (:foreground "aquamarine"))))
+ (font-lock-comment-face ((t (:foreground "light blue"))))
+ (font-lock-constant-face ((t (:foreground "pale green"))))
+ (font-lock-doc-face ((t (:foreground "light sky blue"))))
+ (font-lock-doc-string-face ((t (:foreground "sky blue"))))
+ (font-lock-function-name-face ((t (:bold t :foreground "aquamarine" :weight bold))))
+ (font-lock-keyword-face ((t (:bold t :foreground "pale turquoise" :weight bold))))
+ (font-lock-reference-face ((t (:foreground "pale green"))))
+ (font-lock-string-face ((t (:foreground "light sky blue"))))
+ (font-lock-type-face ((t (:bold t :foreground "sky blue" :weight bold))))
+ (font-lock-variable-name-face ((t (:bold t :foreground "turquoise" :weight bold))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red" :weight bold))))
+ (fringe ((t (:background "Grey15"))))
+ (gnus-cite-face-1 ((t (:foreground "LightSalmon"))))
+ (gnus-cite-face-2 ((t (:foreground "Khaki"))))
+ (gnus-cite-face-3 ((t (:foreground "Coral"))))
+ (gnus-cite-face-4 ((t (:foreground "yellow green"))))
+ (gnus-cite-face-5 ((t (:foreground "dark khaki"))))
+ (gnus-cite-face-6 ((t (:foreground "bisque"))))
+ (gnus-cite-face-7 ((t (:foreground "peru"))))
+ (gnus-cite-face-8 ((t (:foreground "light coral"))))
+ (gnus-cite-face-9 ((t (:foreground "plum"))))
+ (gnus-emphasis-bold ((t (:bold t :weight bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (gnus-emphasis-highlight-words ((t (:background "black" :foreground "yellow"))))
+ (gnus-emphasis-italic ((t (:italic t :slant italic))))
+ (gnus-emphasis-strikethru ((t (nil))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t :weight bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
+ (gnus-group-mail-1-empty-face ((t (:foreground "White"))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "White" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (:foreground "light cyan"))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (:foreground "LightBlue"))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "LightBlue" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (:foreground "Aquamarine"))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "Aquamarine" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (:foreground "White"))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "White" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (:foreground "light cyan"))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (:foreground "LightBlue"))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "LightBlue" :weight bold))))
+ (gnus-group-news-4-empty-face ((t (:foreground "Aquamarine"))))
+ (gnus-group-news-4-face ((t (:bold t :foreground "Aquamarine" :weight bold))))
+ (gnus-group-news-5-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-5-face ((t (:bold t :foreground "MediumAquamarine" :weight bold))))
+ (gnus-group-news-6-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-6-face ((t (:bold t :foreground "MediumAquamarine" :weight bold))))
+ (gnus-group-news-low-empty-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "MediumAquamarine" :weight bold))))
+ (gnus-header-content-face ((t (:foreground "LightSkyBlue3"))))
+ (gnus-header-from-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (gnus-header-name-face ((t (:bold t :foreground "LightBlue" :weight bold))))
+ (gnus-header-newsgroups-face ((t (:italic t :bold t :foreground "MediumAquamarine" :slant italic :weight bold))))
+ (gnus-header-subject-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (gnus-server-agent-face ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
+ (gnus-server-closed-face ((t (:italic t :foreground "Light Steel Blue" :slant italic))))
+ (gnus-server-denied-face ((t (:bold t :foreground "Pink" :weight bold))))
+ (gnus-server-offline-face ((t (:bold t :foreground "Yellow" :weight bold))))
+ (gnus-server-opened-face ((t (:bold t :foreground "Green1" :weight bold))))
+ (gnus-signature-face ((t (:foreground "Grey"))))
+ (gnus-splash-face ((t (:foreground "ForestGreen"))))
+ (gnus-summary-cancelled-face ((t (:background "Black" :foreground "Yellow"))))
+ (gnus-summary-high-ancient-face ((t (:bold t :foreground "MediumAquamarine" :weight bold))))
+ (gnus-summary-high-read-face ((t (:bold t :foreground "Aquamarine" :weight bold))))
+ (gnus-summary-high-ticked-face ((t (:bold t :foreground "LightSalmon" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:italic t :bold t :foreground "beige" :slant italic :weight bold))))
+ (gnus-summary-low-ancient-face ((t (:italic t :foreground "DimGray" :slant italic))))
+ (gnus-summary-low-read-face ((t (:foreground "slate gray"))))
+ (gnus-summary-low-ticked-face ((t (:foreground "Pink"))))
+ (gnus-summary-low-unread-face ((t (:foreground "LightGray"))))
+ (gnus-summary-normal-ancient-face ((t (:foreground "MediumAquamarine"))))
+ (gnus-summary-normal-read-face ((t (:foreground "Aquamarine"))))
+ (gnus-summary-normal-ticked-face ((t (:foreground "LightSalmon"))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:underline t))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :background "grey20" :foreground "grey90" :box nil))))
+ (highlight ((t (:background "dark slate blue" :foreground "light blue"))))
+ (highline-face ((t (:background "DeepSkyBlue4"))))
+ (holiday-face ((t (:background "pink"))))
+ (info-header-node ((t (:bold t :weight bold))))
+ (info-header-xref ((t (:bold t :weight bold :foreground "sky blue"))))
+ (info-menu-5 ((t (:underline t))))
+ (info-menu-header ((t (:bold t :family "helv" :weight bold))))
+ (info-node ((t (:bold t :weight bold))))
+ (info-xref ((t (:bold t :foreground "sky blue" :weight bold))))
+ (isearch ((t (:background "slate blue"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:foreground "sky blue"))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-bug-breakpoint-marker ((t (:background "yellow" :foreground "red"))))
+ (jde-java-font-lock-api-face ((t (:foreground "light goldenrod"))))
+ (jde-java-font-lock-bold-face ((t (:bold t :weight bold))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "light coral"))))
+ (jde-java-font-lock-italic-face ((t (:italic t :slant italic))))
+ (jde-java-font-lock-link-face ((t (:foreground "blue" :underline t :slant normal))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "LightSteelBlue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "LightSalmon"))))
+ (jde-java-font-lock-package-face ((t (:foreground "steelblue1"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (makefile-space-face ((t (:background "hotpink"))))
+ (menu ((t (:background "MidnightBlue" :foreground "Grey"))))
+ (message-cited-text-face ((t (:foreground "LightSalmon"))))
+ (message-header-cc-face ((t (:foreground "light cyan"))))
+ (message-header-name-face ((t (:foreground "LightBlue"))))
+ (message-header-newsgroups-face ((t (:italic t :bold t :foreground "MediumAquamarine" :slant italic :weight bold))))
+ (message-header-other-face ((t (:foreground "MediumAquamarine"))))
+ (message-header-subject-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (message-header-to-face ((t (:bold t :foreground "light cyan" :weight bold))))
+ (message-header-xheader-face ((t (:foreground "MediumAquamarine"))))
+ (message-mml-face ((t (:foreground "ForestGreen"))))
+ (message-separator-face ((t (:foreground "chocolate"))))
+ (mode-line ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style released-button)))))
+ (mouse ((t (:background "Grey"))))
+ (region ((t (:background "DarkSlateBlue"))))
+ (scroll-bar ((t (:background "grey75"))))
+ (secondary-selection ((t (:background "steel blue"))))
+ (semantic-dirty-token-face ((t (:background "gray10"))))
+ (semantic-unmatched-syntax-face ((t (:underline "red"))))
+ (show-paren-match-face ((t (:background "light slate blue" :foreground "white"))))
+ (show-paren-mismatch-face ((t (:background "red" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "seashell2"))))
+ (speedbar-directory-face ((t (:foreground "seashell3"))))
+ (speedbar-file-face ((t (:foreground "seashell4"))))
+ (speedbar-highlight-face ((t (:background "dark slate blue" :foreground "wheat"))))
+ (speedbar-selected-face ((t (:foreground "seashell1" :underline t))))
+ (speedbar-separator-face ((t (:background "blue" :foreground "white" :overline "gray"))))
+ (speedbar-tag-face ((t (:foreground "antique white"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style released-button)))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "light blue"))))
+ (widget-field-face ((t (:background "RoyalBlue4" :foreground "wheat"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "slate blue" :foreground "wheat"))))
+ (woman-bold-face ((t (:bold t :foreground "sky blue" :weight bold))))
+ (woman-italic-face ((t (:foreground "deep sky blue"))))
+ (woman-unknown-face ((t (:foreground "LightSalmon"))))
+ (zmacs-region ((t (:background "DarkSlateBlue")))))))
+
+(defun color-theme-vim-colors ()
+ "Color theme by Michael Soulier, created 2003-03-26."
+ (interactive)
+ (color-theme-install
+ '(color-theme-vim-colors
+ ((background-color . "#ffffff")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "#000000")
+ (foreground-color . "#000000")
+ (mouse-color . "#000000"))
+ ((Man-overstrike-face . bold)
+ (Man-underline-face . underline)
+ (apropos-keybinding-face . underline)
+ (apropos-label-face . italic)
+ (apropos-match-face . secondary-selection)
+ (apropos-property-face . bold-italic)
+ (apropos-symbol-face . bold)
+ (cperl-here-face . font-lock-string-face)
+ (cperl-invalid-face quote underline)
+ (cperl-pod-face . font-lock-comment-face)
+ (cperl-pod-head-face . font-lock-variable-name-face)
+ (help-highlight-face . underline)
+ (ispell-highlight-face . highlight)
+ (list-matching-lines-face . bold)
+ (rpm-spec-dir-face . rpm-spec-dir-face)
+ (rpm-spec-doc-face . rpm-spec-doc-face)
+ (rpm-spec-ghost-face . rpm-spec-ghost-face)
+ (rpm-spec-macro-face . rpm-spec-macro-face)
+ (rpm-spec-package-face . rpm-spec-package-face)
+ (rpm-spec-tag-face . rpm-spec-tag-face)
+ (tags-tag-face . default)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:background "#ffffff" :foreground "#000000"))))
+ (Info-title-1-face ((t (nil))))
+ (Info-title-2-face ((t (nil))))
+ (Info-title-3-face ((t (nil))))
+ (Info-title-4-face ((t (:bold (bold extra-bold ultra-bold)))))
+ (bold ((t (:bold (bold extra-bold ultra-bold)))))
+ (bold-italic ((t (:italic (italic oblique) :bold (bold extra-bold ultra-bold)))))
+ (border ((t (:background "black"))))
+ (comint-highlight-input ((t (:bold (bold extra-bold ultra-bold)))))
+ (comint-highlight-prompt ((t (:foreground "dark blue"))))
+ (cperl-array-face ((t (:foreground "brown"))))
+ (cperl-hash-face ((t (:foreground "red"))))
+ (cperl-nonoverridable-face ((t (:foreground "#008b8b"))))
+ (cursor ((t (:background "#000000"))))
+ (fixed-pitch ((t (nil))))
+ (font-lock-builtin-face ((t (:foreground "purple"))))
+ (font-lock-comment-face ((t (:foreground "blue"))))
+ (font-lock-constant-face ((t (:foreground "green4"))))
+ (font-lock-doc-face ((t (:background "#f2f2f2"))))
+ (font-lock-function-name-face ((t (:foreground "#008b8b"))))
+ (font-lock-keyword-face ((t (:bold (bold extra-bold ultra-bold) :foreground "#a52a2a"))))
+ (font-lock-string-face ((t (:background "#f2f2f2" :foreground "#ff00ff"))))
+ (font-lock-type-face ((t (:foreground "ForestGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "#008b8b"))))
+ (font-lock-warning-face ((t (:bold (bold extra-bold ultra-bold) :foreground "Red"))))
+ (fringe ((t (:background "#e5e5e5"))))
+ (header-line ((t (:background "grey90" :foreground "grey20"))))
+ (highlight ((t (:background "darkseagreen2"))))
+ (info-header-node ((t (nil))))
+ (info-header-xref ((t (nil))))
+ (info-menu-5 ((t (:foreground "red1"))))
+ (info-menu-header ((t (:bold (bold extra-bold ultra-bold)))))
+ (info-node ((t (:italic (italic oblique) :bold (bold extra-bold ultra-bold) :foreground "brown"))))
+ (info-xref ((t (:bold (bold extra-bold ultra-bold) :foreground "magenta4"))))
+ (isearch ((t (:background "magenta4" :foreground "lightskyblue1"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise"))))
+ (italic ((t (:italic (italic oblique)))))
+ (menu ((t (nil))))
+ (mode-line ((t (:background "grey75" :foreground "black"))))
+ (mouse ((t (:background "#000000"))))
+ (region ((t (:background "lightgoldenrod2"))))
+ (rpm-spec-dir-face ((t (:foreground "green"))))
+ (rpm-spec-doc-face ((t (:foreground "magenta"))))
+ (rpm-spec-ghost-face ((t (:foreground "red"))))
+ (rpm-spec-macro-face ((t (:foreground "purple"))))
+ (rpm-spec-package-face ((t (:foreground "red"))))
+ (rpm-spec-tag-face ((t (:foreground "blue"))))
+ (scroll-bar ((t (:background "grey75" :foreground "#000000"))))
+ (secondary-selection ((t (:background "yellow"))))
+ (sh-heredoc-face ((t (:foreground "tan"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (tool-bar ((t (:background "grey75" :foreground "black"))))
+ (tooltip ((t (:background "lightyellow" :foreground "black"))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (nil))))
+ (widget-button-face ((t (:bold (bold extra-bold ultra-bold)))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85")))))))
+
+(defun color-theme-calm-forest ()
+ "Color theme by Artur Hefczyc, created 2003-04-18."
+ (interactive)
+ (color-theme-install
+ '(color-theme-calm-forest
+ ((background-color . "gray12")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "orange")
+ (foreground-color . "green")
+ (mouse-color . "yellow"))
+ ((help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (senator-eldoc-use-color . t)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "gray12" :foreground "green" :inverse-video nil :box nil
+:strike-through nil :overline nil :underline nil :slant normal :weight normal :height 98 :width
+normal :family "outline-courier new"))))
+ (Info-title-1-face ((t (:bold t :weight bold :family "helv" :height 1.728))))
+ (Info-title-2-face ((t (:bold t :family "helv" :weight bold :height 1.44))))
+ (Info-title-3-face ((t (:bold t :weight bold :family "helv" :height 1.2))))
+ (Info-title-4-face ((t (:bold t :family "helv" :weight bold))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (comint-highlight-input ((t (:bold t :weight bold))))
+ (comint-highlight-prompt ((t (:foreground "cyan"))))
+ (cparen-around-andor-face ((t (:bold t :foreground "maroon" :weight bold))))
+ (cparen-around-begin-face ((t (:foreground "maroon"))))
+ (cparen-around-conditional-face ((t (:bold t :foreground "RoyalBlue" :weight bold))))
+ (cparen-around-define-face ((t (:bold t :foreground "Blue" :weight bold))))
+ (cparen-around-lambda-face ((t (:foreground "LightSeaGreen"))))
+ (cparen-around-letdo-face ((t (:bold t :foreground "LightSeaGreen" :weight bold))))
+ (cparen-around-quote-face ((t (:foreground "SaddleBrown"))))
+ (cparen-around-set!-face ((t (:foreground "OrangeRed"))))
+ (cparen-around-syntax-rules-face ((t (:foreground "Magenta"))))
+ (cparen-around-vector-face ((t (:foreground "chocolate"))))
+ (cparen-binding-face ((t (:foreground "ForestGreen"))))
+ (cparen-binding-list-face ((t (:bold t :foreground "ForestGreen" :weight bold))))
+ (cparen-conditional-clause-face ((t (:foreground "RoyalBlue"))))
+ (cparen-normal-paren-face ((t (:foreground "grey50"))))
+ (cursor ((t (:background "orange"))))
+ (custom-button-face ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style
+released-button)))))
+ (custom-button-pressed-face ((t (:background "lightgrey" :foreground "black" :box (:line-width
+2 :style pressed-button)))))
+ (custom-changed-face ((t (:background "blue" :foreground "white"))))
+ (custom-comment-face ((t (:background "dim gray"))))
+ (custom-comment-tag-face ((t (:foreground "gray80"))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (:bold t :family "helv" :weight bold :height 1.2))))
+ (custom-group-tag-face ((t (:bold t :foreground "light blue" :weight bold :height 1.2))))
+ (custom-group-tag-face-1 ((t (:bold t :family "helv" :foreground "pink" :weight bold :height
+1.2))))
+ (custom-invalid-face ((t (:background "red" :foreground "yellow"))))
+ (custom-modified-face ((t (:background "blue" :foreground "white"))))
+ (custom-rogue-face ((t (:background "black" :foreground "pink"))))
+ (custom-saved-face ((t (:underline t))))
+ (custom-set-face ((t (:background "white" :foreground "blue"))))
+ (custom-state-face ((t (:foreground "lime green"))))
+ (custom-variable-button-face ((t (:bold t :underline t :weight bold))))
+ (custom-variable-tag-face ((t (:bold t :family "helv" :foreground "light blue" :weight bold
+:height 1.2))))
+ (eieio-custom-slot-tag-face ((t (:foreground "light blue"))))
+ (extra-whitespace-face ((t (:background "pale green"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-latex-bold-face ((t (:bold t :foreground "OliveDrab" :weight bold))))
+ (font-latex-italic-face ((t (:italic t :foreground "OliveDrab" :slant italic))))
+ (font-latex-math-face ((t (:foreground "burlywood"))))
+ (font-latex-sedate-face ((t (:foreground "LightGray"))))
+ (font-latex-string-face ((t (:foreground "RosyBrown"))))
+ (font-latex-warning-face ((t (:bold t :foreground "Red" :weight bold))))
+ (font-lock-builtin-face ((t (:foreground "LightSteelBlue"))))
+ (font-lock-comment-face ((t (:foreground "chocolate1"))))
+ (font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (font-lock-doc-face ((t (:foreground "LightSalmon"))))
+ (font-lock-function-name-face ((t (:foreground "LightSkyBlue"))))
+ (font-lock-keyword-face ((t (:foreground "Cyan"))))
+ (font-lock-string-face ((t (:foreground "LightSalmon"))))
+ (font-lock-type-face ((t (:foreground "PaleGreen"))))
+ (font-lock-variable-name-face ((t (:foreground "LightGoldenrod"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Pink" :weight bold))))
+ (fringe ((t (:background "grey10"))))
+ (header-line ((t (:box (:line-width -1 :style released-button) :background "grey20" :foreground
+"grey90" :box nil))))
+ (highlight ((t (:background "darkolivegreen"))))
+ (info-header-node ((t (:italic t :bold t :weight bold :slant italic :foreground "white"))))
+ (info-header-xref ((t (:bold t :weight bold :foreground "cyan"))))
+ (info-menu-5 ((t (:foreground "red1"))))
+ (info-menu-header ((t (:bold t :family "helv" :weight bold))))
+ (info-node ((t (:italic t :bold t :foreground "white" :slant italic :weight bold))))
+ (info-xref ((t (:bold t :foreground "cyan" :weight bold))))
+ (isearch ((t (:background "palevioletred2" :foreground "brown4"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise4"))))
+ (italic ((t (:italic t :slant italic))))
+ (jde-bug-breakpoint-cursor ((t (:background "brown" :foreground "cyan"))))
+ (jde-db-active-breakpoint-face ((t (:background "red" :foreground "black"))))
+ (jde-db-requested-breakpoint-face ((t (:background "yellow" :foreground "black"))))
+ (jde-db-spec-breakpoint-face ((t (:background "green" :foreground "black"))))
+ (jde-java-font-lock-api-face ((t (:foreground "light goldenrod"))))
+ (jde-java-font-lock-bold-face ((t (:bold t :weight bold))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (:foreground "Aquamarine"))))
+ (jde-java-font-lock-doc-tag-face ((t (:foreground "light coral"))))
+ (jde-java-font-lock-italic-face ((t (:italic t :slant italic))))
+ (jde-java-font-lock-link-face ((t (:foreground "blue" :underline t :slant normal))))
+ (jde-java-font-lock-modifier-face ((t (:foreground "LightSteelBlue"))))
+ (jde-java-font-lock-number-face ((t (:foreground "LightSalmon"))))
+ (jde-java-font-lock-operator-face ((t (:foreground "medium blue"))))
+ (jde-java-font-lock-package-face ((t (:foreground "steelblue1"))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (:underline t))))
+ (menu ((t (nil))))
+ (mode-line ((t (:background "grey75" :foreground "black" :box (:line-width -1 :style
+released-button)))))
+ (mouse ((t (:background "yellow"))))
+ (region ((t (:background "blue3"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "SkyBlue4"))))
+ (semantic-dirty-token-face ((t (:background "gray10"))))
+ (semantic-unmatched-syntax-face ((t (:underline "red"))))
+ (senator-intangible-face ((t (:foreground "gray75"))))
+ (senator-momentary-highlight-face ((t (:background "gray30"))))
+ (senator-read-only-face ((t (:background "#664444"))))
+ (show-paren-match-face ((t (:background "turquoise"))))
+ (show-paren-mismatch-face ((t (:background "purple" :foreground "white"))))
+ (speedbar-button-face ((t (:foreground "green3"))))
+ (speedbar-directory-face ((t (:foreground "light blue"))))
+ (speedbar-file-face ((t (:foreground "cyan"))))
+ (speedbar-highlight-face ((t (:background "sea green"))))
+ (speedbar-selected-face ((t (:foreground "red" :underline t))))
+ (speedbar-separator-face ((t (:background "blue" :foreground "white" :overline "gray"))))
+ (speedbar-tag-face ((t (:foreground "yellow"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box (:line-width 1 :style
+released-button)))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "lime green"))))
+ (widget-field-face ((t (:background "dim gray"))))
+ (widget-inactive-face ((t (:foreground "light gray"))))
+ (widget-single-line-field-face ((t (:background "dim gray")))))))
+
+(defun color-theme-lawrence ()
+ "Color theme by lawrence mitchell <wence@gmx.li>.
+Mainly shades of green.
+Contains faces for erc, gnus, most of jde."
+ (interactive)
+ (color-theme-install
+ '(color-theme-lawrence
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "green")
+ (foreground-color . "#00CC00")
+ (mouse-color . "black"))
+ ((erc-button-face . bold)
+ (erc-button-mouse-face . highlight)
+ (gnus-article-button-face . bold)
+ (gnus-article-mouse-face . highlight)
+ (gnus-cite-attribution-face . gnus-cite-attribution-face)
+ (gnus-mouse-face . highlight)
+ (gnus-server-agent-face . gnus-server-agent-face)
+ (gnus-server-closed-face . gnus-server-closed-face)
+ (gnus-server-denied-face . gnus-server-denied-face)
+ (gnus-server-offline-face . gnus-server-offline-face)
+ (gnus-server-opened-face . gnus-server-opened-face)
+ (gnus-signature-face . gnus-signature-face)
+ (gnus-summary-selected-face . gnus-summary-selected-face)
+ (gnus-treat-display-face . head)
+ (gnus-treat-display-xface . head)
+ (list-matching-lines-buffer-name-face . underline)
+ (list-matching-lines-face . bold)
+ (paren-match-face . paren-face-match)
+ (paren-mismatch-face . paren-face-mismatch)
+ (paren-no-match-face . paren-face-no-match)
+ (sgml-set-face . t)
+ (tags-tag-face . default)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (nil))))
+ (Buffer-menu-buffer-face ((t (:bold t :weight bold))))
+ (bg:erc-color-face0 ((t (:background "White"))))
+ (bg:erc-color-face1 ((t (:background "black"))))
+ (bg:erc-color-face10 ((t (:background "lightblue1"))))
+ (bg:erc-color-face11 ((t (:background "cyan"))))
+ (bg:erc-color-face12 ((t (:background "blue"))))
+ (bg:erc-color-face13 ((t (:background "deeppink"))))
+ (bg:erc-color-face14 ((t (:background "gray50"))))
+ (bg:erc-color-face15 ((t (:background "gray90"))))
+ (bg:erc-color-face2 ((t (:background "blue4"))))
+ (bg:erc-color-face3 ((t (:background "green4"))))
+ (bg:erc-color-face4 ((t (:background "red"))))
+ (bg:erc-color-face5 ((t (:background "brown"))))
+ (bg:erc-color-face6 ((t (:background "purple"))))
+ (bg:erc-color-face7 ((t (:background "orange"))))
+ (bg:erc-color-face8 ((t (:background "yellow"))))
+ (bg:erc-color-face9 ((t (:background "green"))))
+ (bold ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (bold-italic ((t (:italic t :bold t :slant oblique :weight semi-bold))))
+ (border ((t (:background "black"))))
+ (button ((t (:underline t))))
+ (comint-highlight-input ((t (nil))))
+ (comint-highlight-prompt ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (cursor ((t (:background "green"))))
+ (custom-button-face ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (custom-button-pressed-face ((t (nil))))
+ (custom-changed-face ((t (:italic t :foreground "#00CC00" :background "black" :slant oblique))))
+ (custom-comment-face ((t (nil))))
+ (custom-comment-tag-face ((t (nil))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (nil))))
+ (custom-group-tag-face ((t (nil))))
+ (custom-group-tag-face-1 ((t (nil))))
+ (custom-invalid-face ((t (:foreground "#00CC00" :background "black" :strike-through t))))
+ (custom-modified-face ((t (nil))))
+ (custom-rogue-face ((t (nil))))
+ (custom-saved-face ((t (nil))))
+ (custom-set-face ((t (nil))))
+ (custom-state-face ((t (nil))))
+ (custom-variable-button-face ((t (nil))))
+ (custom-variable-tag-face ((t (nil))))
+ (erc-action-face ((t (:bold t :weight semi-bold))))
+ (erc-bold-face ((t (:bold t :weight bold))))
+ (erc-current-nick-face ((t (:bold t :foreground "LightSeaGreen" :weight semi-bold))))
+ (erc-dangerous-host-face ((t (:foreground "red"))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (:foreground "IndianRed"))))
+ (erc-error-face ((t (:bold t :weight semi-bold :background "darkblue" :foreground "#00CC00"))))
+ (erc-fool-face ((t (:foreground "dim gray"))))
+ (erc-input-face ((t (:foreground "springgreen"))))
+ (erc-inverse-face ((t (:bold t :background "Darkgreen" :foreground "Black" :weight semi-bold))))
+ (erc-keyword-face ((t (:bold t :foreground "pale green" :weight bold))))
+ (erc-nick-default-face ((t (:bold t :weight semi-bold))))
+ (erc-nick-msg-face ((t (:bold t :foreground "springgreen" :weight semi-bold))))
+ (erc-notice-face ((t (:foreground "seagreen" :weight normal))))
+ (erc-pal-face ((t (:bold t :foreground "Magenta" :weight bold))))
+ (erc-prompt-face ((t (:bold t :background "lightBlue2" :foreground "Black" :weight semi-bold))))
+ (erc-timestamp-face ((t (:foreground "seagreen" :weight normal))))
+ (erc-underline-face ((t (:underline t))))
+ (fg:erc-color-face0 ((t (:foreground "White"))))
+ (fg:erc-color-face1 ((t (:foreground "black"))))
+ (fg:erc-color-face10 ((t (:foreground "lightblue1"))))
+ (fg:erc-color-face11 ((t (:foreground "cyan"))))
+ (fg:erc-color-face12 ((t (:foreground "blue"))))
+ (fg:erc-color-face13 ((t (:foreground "deeppink"))))
+ (fg:erc-color-face14 ((t (:foreground "gray50"))))
+ (fg:erc-color-face15 ((t (:foreground "gray90"))))
+ (fg:erc-color-face2 ((t (:foreground "blue4"))))
+ (fg:erc-color-face3 ((t (:foreground "green4"))))
+ (fg:erc-color-face4 ((t (:foreground "red"))))
+ (fg:erc-color-face5 ((t (:foreground "brown"))))
+ (fg:erc-color-face6 ((t (:foreground "purple"))))
+ (fg:erc-color-face7 ((t (:foreground "orange"))))
+ (fg:erc-color-face8 ((t (:foreground "yellow"))))
+ (fg:erc-color-face9 ((t (:foreground "green"))))
+ (fixed-pitch ((t (nil))))
+ (font-latex-string-face ((t (:bold t :weight semi-bold :foreground "seagreen" :background "black"))))
+ (font-latex-warning-face ((t (:bold t :weight semi-bold :background "darkblue" :foreground "#00CC00"))))
+ (font-lock-builtin-face ((t (:foreground "seagreen1"))))
+ (font-lock-comment-face ((t (:background "black" :foreground "medium spring green"))))
+ (font-lock-constant-face ((t (nil))))
+ (font-lock-doc-face ((t (:bold t :background "black" :foreground "seagreen" :weight semi-bold))))
+ (font-lock-function-name-face ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (font-lock-keyword-face ((t (:bold t :background "black" :foreground "green" :underline t :weight semi-bold))))
+ (font-lock-preprocessor-face ((t (:foreground "#00ccdd"))))
+ (font-lock-string-face ((t (:bold t :background "black" :foreground "seagreen" :weight semi-bold))))
+ (font-lock-type-face ((t (nil))))
+ (font-lock-variable-name-face ((t (nil))))
+ (font-lock-warning-face ((t (:bold t :foreground "#00CC00" :background "darkblue" :weight semi-bold))))
+ (fringe ((t (:foreground "#00CC00" :background "#151515"))))
+ (gnus-cite-attribution-face ((t (:italic t :foreground "#00CC00" :background "black" :slant italic))))
+ (gnus-cite-face-1 ((t (:background "black" :foreground "springgreen"))))
+ (gnus-cite-face-10 ((t (nil))))
+ (gnus-cite-face-11 ((t (nil))))
+ (gnus-cite-face-2 ((t (:background "black" :foreground "lightseagreen"))))
+ (gnus-cite-face-3 ((t (:background "black" :foreground "darkseagreen"))))
+ (gnus-cite-face-4 ((t (:background "black" :foreground "forestgreen"))))
+ (gnus-cite-face-5 ((t (:background "black" :foreground "springgreen"))))
+ (gnus-cite-face-6 ((t (:background "black" :foreground "springgreen"))))
+ (gnus-cite-face-7 ((t (:background "black" :foreground "springgreen"))))
+ (gnus-cite-face-8 ((t (:background "black" :foreground "springgreen"))))
+ (gnus-cite-face-9 ((t (:background "black" :foreground "springgreen"))))
+ (gnus-emphasis-bold ((t (:bold t :weight semi-bold))))
+ (gnus-emphasis-bold-italic ((t (:italic t :bold t :slant italic :weight semi-bold))))
+ (gnus-emphasis-highlight-words ((t (:bold t :foreground "#00CC00" :background "black" :underline t :weight bold))))
+ (gnus-emphasis-italic ((t (:italic t :slant italic))))
+ (gnus-emphasis-strikethru ((t (nil))))
+ (gnus-emphasis-underline ((t (:underline t))))
+ (gnus-emphasis-underline-bold ((t (:bold t :underline t :weight semi-bold))))
+ (gnus-emphasis-underline-bold-italic ((t (:italic t :bold t :underline t :slant italic :weight semi-bold))))
+ (gnus-emphasis-underline-italic ((t (:italic t :underline t :slant italic))))
+ (gnus-group-mail-1-empty-face ((t (nil))))
+ (gnus-group-mail-1-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-mail-2-empty-face ((t (nil))))
+ (gnus-group-mail-2-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-mail-3-empty-face ((t (nil))))
+ (gnus-group-mail-3-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-mail-low-empty-face ((t (nil))))
+ (gnus-group-mail-low-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-news-1-empty-face ((t (nil))))
+ (gnus-group-news-1-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-news-2-empty-face ((t (nil))))
+ (gnus-group-news-2-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-group-news-low-empty-face ((t (nil))))
+ (gnus-group-news-low-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-header-content-face ((t (:background "black" :foreground "springgreen"))))
+ (gnus-header-from-face ((t (nil))))
+ (gnus-header-name-face ((t (nil))))
+ (gnus-header-newsgroups-face ((t (nil))))
+ (gnus-header-subject-face ((t (nil))))
+ (gnus-server-agent-face ((t (:bold t :foreground "PaleTurquoise" :weight bold))))
+ (gnus-server-closed-face ((t (:italic t :foreground "Light Steel Blue" :slant italic))))
+ (gnus-server-denied-face ((t (:bold t :foreground "Pink" :weight semi-bold))))
+ (gnus-server-offline-face ((t (:bold t :foreground "Yellow" :weight bold))))
+ (gnus-server-opened-face ((t (:bold t :foreground "Green1" :weight semi-bold))))
+ (gnus-signature-face ((t (:background "black" :foreground "springgreen" :slant normal))))
+ (gnus-splash-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-summary-cancelled-face ((t (:foreground "#00CC00" :background "black" :strike-through t))))
+ (gnus-summary-high-ancient-face ((t (nil))))
+ (gnus-summary-high-read-face ((t (nil))))
+ (gnus-summary-high-ticked-face ((t (:background "black" :foreground "seagreen"))))
+ (gnus-summary-high-undownloaded-face ((t (:bold t :foreground "LightGray" :weight bold))))
+ (gnus-summary-high-unread-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-summary-low-ancient-face ((t (nil))))
+ (gnus-summary-low-read-face ((t (nil))))
+ (gnus-summary-low-ticked-face ((t (nil))))
+ (gnus-summary-low-undownloaded-face ((t (:italic t :foreground "LightGray" :slant italic :weight normal))))
+ (gnus-summary-low-unread-face ((t (:bold t :foreground "#00CC00" :background "black" :weight bold))))
+ (gnus-summary-normal-ancient-face ((t (nil))))
+ (gnus-summary-normal-read-face ((t (nil))))
+ (gnus-summary-normal-ticked-face ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (gnus-summary-normal-undownloaded-face ((t (:foreground "LightGray" :weight normal))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (:background "#101010"))))
+ (gnus-x-face ((t (:background "white" :foreground "black"))))
+ (header-line ((t (nil))))
+ (highlight ((t (:foreground "#00CC00" :background "darkgreen"))))
+ (ido-first-match-face ((t (:bold t :weight bold))))
+ (ido-indicator-face ((t (:background "red" :foreground "yellow" :width condensed))))
+ (ido-only-match-face ((t (:foreground "ForestGreen"))))
+ (ido-subdir-face ((t (:foreground "red"))))
+ (isearch ((t (:background "seagreen" :foreground "black"))))
+ (isearch-lazy-highlight-face ((t (:background "darkseagreen" :foreground "black"))))
+ (italic ((t (:italic t :foreground "#00CC00" :background "black" :slant oblique))))
+ (menu ((t (:bold t :background "black" :foreground "green" :box (:line-width -1 :color "#606060") :weight semi-bold))))
+ (message-cited-text-face ((t (:italic t :foreground "#00CC00" :background "black" :slant oblique))))
+ (message-header-cc-face ((t (nil))))
+ (message-header-name-face ((t (nil))))
+ (message-header-newsgroups-face ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (message-header-other-face ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (message-header-subject-face ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (message-header-to-face ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (message-header-xheader-face ((t (nil))))
+ (message-mml-face ((t (:italic t :foreground "#00CC00" :background "black" :slant oblique))))
+ (message-separator-face ((t (nil))))
+ (minibuffer-prompt ((t (:background "black" :foreground "seagreen"))))
+ (mode-line ((t (:bold t :background "#404040" :foreground "green" :box (:line-width -1 :color "#606060") :weight semi-bold))))
+ (mode-line-inactive ((t (:bold t :weight semi-bold :box (:line-width -1 :color "#606060") :foreground "green" :background "#101010"))))
+ (mouse ((t (:background "black"))))
+ (paren-face ((t (:background "black" :foreground "darkgreen"))))
+ (paren-face-match ((t (:background "black" :foreground "springgreen"))))
+ (paren-face-mismatch ((t (:foreground "#00CC00" :background "black" :strike-through t))))
+ (paren-face-no-match ((t (:background "black" :foreground "red"))))
+ (region ((t (:background "seagreen" :foreground "black"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "darkseagreen" :foreground "black"))))
+ (semantic-dirty-token-face ((t (:background "gray10"))))
+ (semantic-unmatched-syntax-face ((t (:underline "red"))))
+ (sgml-end-tag-face ((t (:foreground "seagreen"))))
+ (sgml-start-tag-face ((t (:foreground "seagreen"))))
+ (tabbar-button-face ((t (:background "black" :foreground "#00cc00" :box (:line-width 2 :color "black" :style released-button)))))
+ (tabbar-default-face ((t (:background "black" :foreground "#00cc00"))))
+ (tabbar-selected-face ((t (:background "black" :foreground "springgreen" :box (:line-width 2 :color "black" :style released-button)))))
+ (tabbar-separator-face ((t (:foreground "#00cc00" :background "black"))))
+ (tabbar-unselected-face ((t (:background "black" :foreground "seagreen" :box (:line-width 2 :color "black" :style pressed-button)))))
+ (tool-bar ((t (:box (:line-width 1 :style released-button)))))
+ (tooltip ((t (nil))))
+ (trailing-whitespace ((t (:background "lightseagreen" :foreground "black"))))
+ (underline ((t (:foreground "#00CC00" :background "black" :underline t))))
+ (variable-pitch ((t (:underline nil :foreground "#00CC00" :background "black"))))
+ (widget-button-face ((t (:bold t :foreground "#00CC00" :background "black"))))
+ (widget-button-pressed-face ((t (nil))))
+ (widget-documentation-face ((t (nil))))
+ (widget-field-face ((t (:italic t :foreground "#00CC00" :background "black" :slant oblique))))
+ (widget-inactive-face ((t (nil))))
+ (widget-single-line-field-face ((t (nil)))))))
+
+(defun color-theme-matrix ()
+ "Color theme by walterh@rocketmail.com, created 2003-10-16."
+ (interactive)
+ (color-theme-install
+ '(color-theme-matrix
+ ((background-color . "black")
+ (background-mode . dark)
+ (background-toolbar-color . "bisque")
+ (border-color . "orange")
+ (bottom-toolbar-shadow-color . "#909099999999")
+ (cursor-color . "#7eff00")
+ (foreground-color . "#7eff00")
+ (mouse-color . "#7eff00")
+ (top-toolbar-shadow-color . "#ffffffffffff"))
+ ((help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (rmail-highlight-face . font-lock-function-name-face)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "black" :foreground
+"#7eff00" :inverse-video nil :box nil :strike-through nil :overline nil
+:underline nil :slant normal :weight normal :height 90 :width normal
+:family "outline-courier new"))))
+ (Buffer-menu-buffer-face ((t (nil))))
+ (CUA-global-mark-face ((t (nil))))
+ (CUA-rectangle-face ((t (nil))))
+ (CUA-rectangle-noselect-face ((t (nil))))
+ (Info-title-1-face ((t (nil))))
+ (Info-title-2-face ((t (nil))))
+ (Info-title-3-face ((t (nil))))
+ (Info-title-4-face ((t (nil))))
+ (antlr-font-lock-keyword-face ((t (nil))))
+ (antlr-font-lock-literal-face ((t (nil))))
+ (antlr-font-lock-ruledef-face ((t (nil))))
+ (antlr-font-lock-ruleref-face ((t (nil))))
+ (antlr-font-lock-tokendef-face ((t (nil))))
+ (antlr-font-lock-tokenref-face ((t (nil))))
+ (bbdb-company ((t (nil))))
+ (bbdb-field-name ((t (nil))))
+ (bbdb-field-value ((t (nil))))
+ (bbdb-name ((t (nil))))
+ (bg:erc-color-face0 ((t (nil))))
+ (bg:erc-color-face1 ((t (nil))))
+ (bg:erc-color-face10 ((t (nil))))
+ (bg:erc-color-face11 ((t (nil))))
+ (bg:erc-color-face12 ((t (nil))))
+ (bg:erc-color-face13 ((t (nil))))
+ (bg:erc-color-face14 ((t (nil))))
+ (bg:erc-color-face15 ((t (nil))))
+ (bg:erc-color-face2 ((t (nil))))
+ (bg:erc-color-face3 ((t (nil))))
+ (bg:erc-color-face4 ((t (nil))))
+ (bg:erc-color-face5 ((t (nil))))
+ (bg:erc-color-face6 ((t (nil))))
+ (bg:erc-color-face7 ((t (nil))))
+ (bg:erc-color-face8 ((t (nil))))
+ (bg:erc-color-face9 ((t (nil))))
+ (blank-space-face ((t (nil))))
+ (blank-tab-face ((t (nil))))
+ (blue ((t (nil))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:bold t :weight bold))))
+ (border ((t (:background "orange"))))
+ (border-glyph ((t (nil))))
+ (buffers-tab ((t (nil))))
+ (button ((t (nil))))
+ (calendar-today-face ((t (nil))))
+ (change-log-acknowledgement-face ((t (nil))))
+ (change-log-conditionals-face ((t (nil))))
+ (change-log-date-face ((t (nil))))
+ (change-log-email-face ((t (nil))))
+ (change-log-file-face ((t (nil))))
+ (change-log-function-face ((t (nil))))
+ (change-log-list-face ((t (nil))))
+ (change-log-name-face ((t (nil))))
+ (clearcase-dired-checkedout-face ((t (nil))))
+ (comint-highlight-input ((t (nil))))
+ (comint-highlight-prompt ((t (nil))))
+ (cparen-around-andor-face ((t (nil))))
+ (cparen-around-begin-face ((t (nil))))
+ (cparen-around-conditional-face ((t (nil))))
+ (cparen-around-define-face ((t (nil))))
+ (cparen-around-lambda-face ((t (nil))))
+ (cparen-around-letdo-face ((t (nil))))
+ (cparen-around-quote-face ((t (nil))))
+ (cparen-around-set!-face ((t (nil))))
+ (cparen-around-syntax-rules-face ((t (nil))))
+ (cparen-around-vector-face ((t (nil))))
+ (cparen-binding-face ((t (nil))))
+ (cparen-binding-list-face ((t (nil))))
+ (cparen-conditional-clause-face ((t (nil))))
+ (cparen-normal-paren-face ((t (nil))))
+ (cperl-array-face ((t (nil))))
+ (cperl-hash-face ((t (nil))))
+ (cperl-invalid-face ((t (nil))))
+ (cperl-nonoverridable-face ((t (nil))))
+ (cursor ((t (:background "#7eff00" :foreground "black"))))
+ (custom-button-face ((t (nil))))
+ (custom-button-pressed-face ((t (nil))))
+ (custom-changed-face ((t (nil))))
+ (custom-comment-face ((t (nil))))
+ (custom-comment-tag-face ((t (nil))))
+ (custom-documentation-face ((t (nil))))
+ (custom-face-tag-face ((t (nil))))
+ (custom-group-tag-face ((t (nil))))
+ (custom-group-tag-face-1 ((t (nil))))
+ (custom-invalid-face ((t (nil))))
+ (custom-modified-face ((t (nil))))
+ (custom-rogue-face ((t (nil))))
+ (custom-saved-face ((t (nil))))
+ (custom-set-face ((t (nil))))
+ (custom-state-face ((t (nil))))
+ (custom-variable-button-face ((t (nil))))
+ (custom-variable-tag-face ((t (nil))))
+ (cvs-filename-face ((t (nil))))
+ (cvs-handled-face ((t (nil))))
+ (cvs-header-face ((t (nil))))
+ (cvs-marked-face ((t (nil))))
+ (cvs-msg-face ((t (nil))))
+ (cvs-need-action-face ((t (nil))))
+ (cvs-unknown-face ((t (nil))))
+ (cyan ((t (nil))))
+ (diary-face ((t (nil))))
+ (diff-added-face ((t (nil))))
+ (diff-changed-face ((t (nil))))
+ (diff-context-face ((t (nil))))
+ (diff-file-header-face ((t (nil))))
+ (diff-function-face ((t (nil))))
+ (diff-header-face ((t (nil))))
+ (diff-hunk-header-face ((t (nil))))
+ (diff-index-face ((t (nil))))
+ (diff-nonexistent-face ((t (nil))))
+ (diff-removed-face ((t (nil))))
+ (dired-face-boring ((t (nil))))
+ (dired-face-directory ((t (nil))))
+ (dired-face-executable ((t (nil))))
+ (dired-face-flagged ((t (nil))))
+ (dired-face-header ((t (nil))))
+ (dired-face-marked ((t (nil))))
+ (dired-face-permissions ((t (nil))))
+ (dired-face-setuid ((t (nil))))
+ (dired-face-socket ((t (nil))))
+ (dired-face-symlink ((t (nil))))
+ (display-time-mail-balloon-enhance-face ((t (nil))))
+ (display-time-mail-balloon-gnus-group-face ((t (nil))))
+ (display-time-time-balloon-face ((t (nil))))
+ (ebrowse-default-face ((t (nil))))
+ (ebrowse-file-name-face ((t (nil))))
+ (ebrowse-member-attribute-face ((t (nil))))
+ (ebrowse-member-class-face ((t (nil))))
+ (ebrowse-progress-face ((t (nil))))
+ (ebrowse-root-class-face ((t (nil))))
+ (ebrowse-tree-mark-face ((t (nil))))
+ (ecb-sources-face ((t (nil))))
+ (edb-inter-field-face ((t (nil))))
+ (edb-normal-summary-face ((t (nil))))
+ (ediff-current-diff-face-A ((t (nil))))
+ (ediff-current-diff-face-Ancestor ((t (nil))))
+ (ediff-current-diff-face-B ((t (nil))))
+ (ediff-current-diff-face-C ((t (nil))))
+ (ediff-even-diff-face-A ((t (nil))))
+ (ediff-even-diff-face-Ancestor ((t (nil))))
+ (ediff-even-diff-face-B ((t (nil))))
+ (ediff-even-diff-face-C ((t (nil))))
+ (ediff-fine-diff-face-A ((t (nil))))
+ (ediff-fine-diff-face-Ancestor ((t (nil))))
+ (ediff-fine-diff-face-B ((t (nil))))
+ (ediff-fine-diff-face-C ((t (nil))))
+ (ediff-odd-diff-face-A ((t (nil))))
+ (ediff-odd-diff-face-Ancestor ((t (nil))))
+ (ediff-odd-diff-face-B ((t (nil))))
+ (ediff-odd-diff-face-C ((t (nil))))
+ (eieio-custom-slot-tag-face ((t (nil))))
+ (emacs-wiki-bad-link-face ((t (nil))))
+ (emacs-wiki-link-face ((t (nil))))
+ (erc-action-face ((t (nil))))
+ (erc-bold-face ((t (nil))))
+ (erc-current-nick-face ((t (nil))))
+ (erc-dangerous-host-face ((t (nil))))
+ (erc-default-face ((t (nil))))
+ (erc-direct-msg-face ((t (nil))))
+ (erc-error-face ((t (nil))))
+ (erc-fool-face ((t (nil))))
+ (erc-highlight-face ((t (nil))))
+ (erc-input-face ((t (nil))))
+ (erc-inverse-face ((t (nil))))
+ (erc-keyword-face ((t (nil))))
+ (erc-nick-default-face ((t (nil))))
+ (erc-nick-msg-face ((t (nil))))
+ (erc-notice-face ((t (nil))))
+ (erc-pal-face ((t (nil))))
+ (erc-prompt-face ((t (nil))))
+ (erc-timestamp-face ((t (nil))))
+ (erc-underline-face ((t (nil))))
+ (eshell-ls-archive-face ((t (nil))))
+ (eshell-ls-backup-face ((t (nil))))
+ (eshell-ls-clutter-face ((t (nil))))
+ (eshell-ls-directory-face ((t (nil))))
+ (eshell-ls-executable-face ((t (nil))))
+ (eshell-ls-missing-face ((t (nil))))
+ (eshell-ls-picture-face ((t (nil))))
+ (eshell-ls-product-face ((t (nil))))
+ (eshell-ls-readonly-face ((t (nil))))
+ (eshell-ls-special-face ((t (nil))))
+ (eshell-ls-symlink-face ((t (nil))))
+ (eshell-ls-text-face ((t (nil))))
+ (eshell-ls-todo-face ((t (nil))))
+ (eshell-ls-unreadable-face ((t (nil))))
+ (eshell-prompt-face ((t (nil))))
+ (eshell-test-failed-face ((t (nil))))
+ (eshell-test-ok-face ((t (nil))))
+ (excerpt ((t (nil))))
+ (extra-whitespace-face ((t (nil))))
+ (ff-paths-non-existant-file-face ((t (nil))))
+ (fg:black ((t (nil))))
+ (fg:erc-color-face0 ((t (nil))))
+ (fg:erc-color-face1 ((t (nil))))
+ (fg:erc-color-face10 ((t (nil))))
+ (fg:erc-color-face11 ((t (nil))))
+ (fg:erc-color-face12 ((t (nil))))
+ (fg:erc-color-face13 ((t (nil))))
+ (fg:erc-color-face14 ((t (nil))))
+ (fg:erc-color-face15 ((t (nil))))
+ (fg:erc-color-face2 ((t (nil))))
+ (fg:erc-color-face3 ((t (nil))))
+ (fg:erc-color-face4 ((t (nil))))
+ (fg:erc-color-face5 ((t (nil))))
+ (fg:erc-color-face6 ((t (nil))))
+ (fg:erc-color-face7 ((t (nil))))
+ (fg:erc-color-face8 ((t (nil))))
+ (fg:erc-color-face9 ((t (nil))))
+ (fixed ((t (nil))))
+ (fixed-pitch ((t (nil))))
+ (fl-comment-face ((t (nil))))
+ (fl-function-name-face ((t (nil))))
+ (fl-keyword-face ((t (nil))))
+ (fl-string-face ((t (nil))))
+ (fl-type-face ((t (nil))))
+ (flash-paren-face-off ((t (nil))))
+ (flash-paren-face-on ((t (nil))))
+ (flash-paren-face-region ((t (nil))))
+ (flyspell-duplicate-face ((t (nil))))
+ (flyspell-incorrect-face ((t (nil))))
+ (font-latex-bold-face ((t (nil))))
+ (font-latex-italic-face ((t (nil))))
+ (font-latex-math-face ((t (nil))))
+ (font-latex-sedate-face ((t (nil))))
+ (font-latex-string-face ((t (nil))))
+ (font-latex-warning-face ((t (nil))))
+ (font-lock-builtin-face ((t (:foreground "pink2"))))
+ (font-lock-comment-face ((t (:italic t :background "black" :slant
+italic))))
+ (font-lock-constant-face ((t (:foreground "magenta"))))
+ (font-lock-doc-face ((t (nil))))
+ (font-lock-doc-string-face ((t (nil))))
+ (font-lock-exit-face ((t (nil))))
+ (font-lock-function-name-face ((t (:bold t :underline t :weight
+bold))))
+ (font-lock-keyword-face ((t (:foreground "yellow1"))))
+ (font-lock-other-emphasized-face ((t (nil))))
+ (font-lock-other-type-face ((t (nil))))
+ (font-lock-preprocessor-face ((t (nil))))
+ (font-lock-reference-face ((t (nil))))
+ (font-lock-special-comment-face ((t (nil))))
+ (font-lock-special-keyword-face ((t (nil))))
+ (font-lock-string-face ((t (:foreground "yellow2"))))
+ (font-lock-type-face ((t (:foreground "LightYellow1"))))
+ (font-lock-variable-name-face ((t (:foreground "light green"))))
+ (font-lock-warning-face ((t (nil))))
+ (fringe ((t (nil))))
+ (gnus-cite-attribution-face ((t (nil))))
+ (gnus-cite-face-1 ((t (nil))))
+ (gnus-cite-face-10 ((t (nil))))
+ (gnus-cite-face-11 ((t (nil))))
+ (gnus-cite-face-2 ((t (nil))))
+ (gnus-cite-face-3 ((t (nil))))
+ (gnus-cite-face-4 ((t (nil))))
+ (gnus-cite-face-5 ((t (nil))))
+ (gnus-cite-face-6 ((t (nil))))
+ (gnus-cite-face-7 ((t (nil))))
+ (gnus-cite-face-8 ((t (nil))))
+ (gnus-cite-face-9 ((t (nil))))
+ (gnus-emphasis-bold ((t (nil))))
+ (gnus-emphasis-bold-italic ((t (nil))))
+ (gnus-emphasis-highlight-words ((t (nil))))
+ (gnus-emphasis-italic ((t (nil))))
+ (gnus-emphasis-strikethru ((t (nil))))
+ (gnus-emphasis-underline ((t (nil))))
+ (gnus-emphasis-underline-bold ((t (nil))))
+ (gnus-emphasis-underline-bold-italic ((t (nil))))
+ (gnus-emphasis-underline-italic ((t (nil))))
+ (gnus-filterhist-face-1 ((t (nil))))
+ (gnus-group-mail-1-empty-face ((t (nil))))
+ (gnus-group-mail-1-face ((t (nil))))
+ (gnus-group-mail-2-empty-face ((t (nil))))
+ (gnus-group-mail-2-face ((t (nil))))
+ (gnus-group-mail-3-empty-face ((t (nil))))
+ (gnus-group-mail-3-face ((t (nil))))
+ (gnus-group-mail-low-empty-face ((t (nil))))
+ (gnus-group-mail-low-face ((t (nil))))
+ (gnus-group-news-1-empty-face ((t (nil))))
+ (gnus-group-news-1-face ((t (nil))))
+ (gnus-group-news-2-empty-face ((t (nil))))
+ (gnus-group-news-2-face ((t (nil))))
+ (gnus-group-news-3-empty-face ((t (nil))))
+ (gnus-group-news-3-face ((t (nil))))
+ (gnus-group-news-4-empty-face ((t (nil))))
+ (gnus-group-news-4-face ((t (nil))))
+ (gnus-group-news-5-empty-face ((t (nil))))
+ (gnus-group-news-5-face ((t (nil))))
+ (gnus-group-news-6-empty-face ((t (nil))))
+ (gnus-group-news-6-face ((t (nil))))
+ (gnus-group-news-low-empty-face ((t (nil))))
+ (gnus-group-news-low-face ((t (nil))))
+ (gnus-header-content-face ((t (nil))))
+ (gnus-header-from-face ((t (nil))))
+ (gnus-header-name-face ((t (nil))))
+ (gnus-header-newsgroups-face ((t (nil))))
+ (gnus-header-subject-face ((t (nil))))
+ (gnus-picon-face ((t (nil))))
+ (gnus-picon-xbm-face ((t (nil))))
+ (gnus-picons-face ((t (nil))))
+ (gnus-picons-xbm-face ((t (nil))))
+ (gnus-server-agent-face ((t (nil))))
+ (gnus-server-closed-face ((t (nil))))
+ (gnus-server-denied-face ((t (nil))))
+ (gnus-server-offline-face ((t (nil))))
+ (gnus-server-opened-face ((t (nil))))
+ (gnus-signature-face ((t (nil))))
+ (gnus-splash ((t (nil))))
+ (gnus-splash-face ((t (nil))))
+ (gnus-summary-cancelled-face ((t (nil))))
+ (gnus-summary-high-ancient-face ((t (nil))))
+ (gnus-summary-high-read-face ((t (nil))))
+ (gnus-summary-high-ticked-face ((t (nil))))
+ (gnus-summary-high-undownloaded-face ((t (nil))))
+ (gnus-summary-high-unread-face ((t (nil))))
+ (gnus-summary-low-ancient-face ((t (nil))))
+ (gnus-summary-low-read-face ((t (nil))))
+ (gnus-summary-low-ticked-face ((t (nil))))
+ (gnus-summary-low-undownloaded-face ((t (nil))))
+ (gnus-summary-low-unread-face ((t (nil))))
+ (gnus-summary-normal-ancient-face ((t (nil))))
+ (gnus-summary-normal-read-face ((t (nil))))
+ (gnus-summary-normal-ticked-face ((t (nil))))
+ (gnus-summary-normal-undownloaded-face ((t (nil))))
+ (gnus-summary-normal-unread-face ((t (nil))))
+ (gnus-summary-selected-face ((t (nil))))
+ (gnus-x-face ((t (nil))))
+ (green ((t (nil))))
+ (gui-button-face ((t (nil))))
+ (gui-element ((t (nil))))
+ (header-line ((t (nil))))
+ (hi-black-b ((t (nil))))
+ (hi-black-hb ((t (nil))))
+ (hi-blue ((t (nil))))
+ (hi-blue-b ((t (nil))))
+ (hi-green ((t (nil))))
+ (hi-green-b ((t (nil))))
+ (hi-pink ((t (nil))))
+ (hi-red-b ((t (nil))))
+ (hi-yellow ((t (nil))))
+ (highlight ((t (:background "#7eff00" :foreground "black"))))
+ (highlight-changes-delete-face ((t (nil))))
+ (highlight-changes-face ((t (nil))))
+ (highline-face ((t (nil))))
+ (holiday-face ((t (nil))))
+ (html-helper-bold-face ((t (nil))))
+ (html-helper-bold-italic-face ((t (nil))))
+ (html-helper-builtin-face ((t (nil))))
+ (html-helper-italic-face ((t (nil))))
+ (html-helper-underline-face ((t (nil))))
+ (html-tag-face ((t (nil))))
+ (hyper-apropos-documentation ((t (nil))))
+ (hyper-apropos-heading ((t (nil))))
+ (hyper-apropos-hyperlink ((t (nil))))
+ (hyper-apropos-major-heading ((t (nil))))
+ (hyper-apropos-section-heading ((t (nil))))
+ (hyper-apropos-warning ((t (nil))))
+ (ibuffer-deletion-face ((t (nil))))
+ (ibuffer-marked-face ((t (nil))))
+ (idlwave-help-link-face ((t (nil))))
+ (idlwave-shell-bp-face ((t (nil))))
+ (ido-first-match-face ((t (nil))))
+ (ido-indicator-face ((t (nil))))
+ (ido-only-match-face ((t (nil))))
+ (ido-subdir-face ((t (nil))))
+ (info-header-node ((t (nil))))
+ (info-header-xref ((t (nil))))
+ (info-menu-5 ((t (nil))))
+ (info-menu-6 ((t (nil))))
+ (info-menu-header ((t (nil))))
+ (info-node ((t (nil))))
+ (info-xref ((t (nil))))
+ (isearch ((t (nil))))
+ (isearch-lazy-highlight-face ((t (nil))))
+ (isearch-secondary ((t (nil))))
+ (italic ((t (:underline t))))
+ (jde-bug-breakpoint-cursor ((t (nil))))
+ (jde-bug-breakpoint-marker ((t (nil))))
+ (jde-db-active-breakpoint-face ((t (nil))))
+ (jde-db-requested-breakpoint-face ((t (nil))))
+ (jde-db-spec-breakpoint-face ((t (nil))))
+ (jde-java-font-lock-api-face ((t (nil))))
+ (jde-java-font-lock-bold-face ((t (nil))))
+ (jde-java-font-lock-code-face ((t (nil))))
+ (jde-java-font-lock-constant-face ((t (nil))))
+ (jde-java-font-lock-doc-tag-face ((t (nil))))
+ (jde-java-font-lock-italic-face ((t (nil))))
+ (jde-java-font-lock-link-face ((t (nil))))
+ (jde-java-font-lock-modifier-face ((t (nil))))
+ (jde-java-font-lock-number-face ((t (nil))))
+ (jde-java-font-lock-operator-face ((t (nil))))
+ (jde-java-font-lock-package-face ((t (nil))))
+ (jde-java-font-lock-pre-face ((t (nil))))
+ (jde-java-font-lock-underline-face ((t (nil))))
+ (lazy-highlight-face ((t (nil))))
+ (left-margin ((t (nil))))
+ (linemenu-face ((t (nil))))
+ (list-mode-item-selected ((t (nil))))
+ (log-view-file-face ((t (nil))))
+ (log-view-message-face ((t (nil))))
+ (magenta ((t (nil))))
+ (makefile-space-face ((t (nil))))
+ (man-bold ((t (nil))))
+ (man-heading ((t (nil))))
+ (man-italic ((t (nil))))
+ (man-xref ((t (nil))))
+ (menu ((t (nil))))
+ (message-cited-text ((t (nil))))
+ (message-cited-text-face ((t (nil))))
+ (message-header-cc-face ((t (nil))))
+ (message-header-contents ((t (nil))))
+ (message-header-name-face ((t (nil))))
+ (message-header-newsgroups-face ((t (nil))))
+ (message-header-other-face ((t (nil))))
+ (message-header-subject-face ((t (nil))))
+ (message-header-to-face ((t (nil))))
+ (message-header-xheader-face ((t (nil))))
+ (message-headers ((t (nil))))
+ (message-highlighted-header-contents ((t (nil))))
+ (message-mml-face ((t (nil))))
+ (message-separator-face ((t (nil))))
+ (message-url ((t (nil))))
+ (minibuffer-prompt ((t (nil))))
+ (mmm-face ((t (nil))))
+ (mode-line ((t (:bold t :background "gray" :foreground "black"
+:weight bold))))
+ (mode-line-inactive ((t (nil))))
+ (modeline-buffer-id ((t (:background "orange" :foreground
+"black"))))
+ (modeline-mousable ((t (:background "orange" :foreground
+"black"))))
+ (modeline-mousable-minor-mode ((t (:background "orange"
+:foreground "black"))))
+ (mouse ((t (nil))))
+ (mpg123-face-cur ((t (nil))))
+ (mpg123-face-slider ((t (nil))))
+ (my-tab-face ((t (nil))))
+ (nil ((t (nil))))
+ (overlay-empty-face ((t (nil))))
+ (p4-diff-del-face ((t (nil))))
+ (paren-blink-off ((t (nil))))
+ (paren-face ((t (nil))))
+ (paren-face-match ((t (nil))))
+ (paren-face-mismatch ((t (nil))))
+ (paren-face-no-match ((t (nil))))
+ (paren-match ((t (nil))))
+ (paren-mismatch ((t (nil))))
+ (paren-mismatch-face ((t (nil))))
+ (paren-no-match-face ((t (nil))))
+ (pointer ((t (nil))))
+ (primary-selection ((t (nil))))
+ (reb-match-0 ((t (nil))))
+ (reb-match-1 ((t (nil))))
+ (reb-match-2 ((t (nil))))
+ (reb-match-3 ((t (nil))))
+ (red ((t (nil))))
+ (region ((t (:background "#7eff00" :foreground "black"))))
+ (right-margin ((t (nil))))
+ (rpm-spec-dir-face ((t (nil))))
+ (rpm-spec-doc-face ((t (nil))))
+ (rpm-spec-ghost-face ((t (nil))))
+ (rpm-spec-macro-face ((t (nil))))
+ (rpm-spec-package-face ((t (nil))))
+ (rpm-spec-tag-face ((t (nil))))
+ (rpm-spec-var-face ((t (nil))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "orange" :foreground
+"black"))))
+ (semantic-dirty-token-face ((t (nil))))
+ (semantic-intangible-face ((t (nil))))
+ (semantic-read-only-face ((t (nil))))
+ (semantic-unmatched-syntax-face ((t (nil))))
+ (senator-intangible-face ((t (nil))))
+ (senator-momentary-highlight-face ((t (nil))))
+ (senator-read-only-face ((t (nil))))
+ (sgml-comment-face ((t (nil))))
+ (sgml-doctype-face ((t (nil))))
+ (sgml-end-tag-face ((t (nil))))
+ (sgml-entity-face ((t (nil))))
+ (sgml-ignored-face ((t (nil))))
+ (sgml-ms-end-face ((t (nil))))
+ (sgml-ms-start-face ((t (nil))))
+ (sgml-pi-face ((t (nil))))
+ (sgml-sgml-face ((t (nil))))
+ (sgml-short-ref-face ((t (nil))))
+ (sgml-shortref-face ((t (nil))))
+ (sgml-start-tag-face ((t (nil))))
+ (sh-heredoc-face ((t (nil))))
+ (shell-option-face ((t (nil))))
+ (shell-output-2-face ((t (nil))))
+ (shell-output-3-face ((t (nil))))
+ (shell-output-face ((t (nil))))
+ (shell-prompt-face ((t (nil))))
+ (show-block-face1 ((t (nil))))
+ (show-block-face2 ((t (nil))))
+ (show-block-face3 ((t (nil))))
+ (show-block-face4 ((t (nil))))
+ (show-block-face5 ((t (nil))))
+ (show-block-face6 ((t (nil))))
+ (show-block-face7 ((t (nil))))
+ (show-block-face8 ((t (nil))))
+ (show-block-face9 ((t (nil))))
+ (show-paren-match-face ((t (:background "orange" :foreground
+"black"))))
+ (show-paren-mismatch-face ((t (:underline t))))
+ (show-tabs-space-face ((t (nil))))
+ (show-tabs-tab-face ((t (nil))))
+ (smerge-base-face ((t (nil))))
+ (smerge-markers-face ((t (nil))))
+ (smerge-mine-face ((t (nil))))
+ (smerge-other-face ((t (nil))))
+ (speedbar-button-face ((t (nil))))
+ (speedbar-directory-face ((t (nil))))
+ (speedbar-file-face ((t (nil))))
+ (speedbar-highlight-face ((t (nil))))
+ (speedbar-selected-face ((t (nil))))
+ (speedbar-separator-face ((t (nil))))
+ (speedbar-tag-face ((t (nil))))
+ (strokes-char-face ((t (nil))))
+ (swbuff-current-buffer-face ((t (nil))))
+ (tabbar-button-face ((t (nil))))
+ (tabbar-default-face ((t (nil))))
+ (tabbar-selected-face ((t (nil))))
+ (tabbar-separator-face ((t (nil))))
+ (tabbar-unselected-face ((t (nil))))
+ (template-message-face ((t (nil))))
+ (term-black ((t (nil))))
+ (term-blackbg ((t (nil))))
+ (term-blue ((t (nil))))
+ (term-blue-bold-face ((t (nil))))
+ (term-blue-face ((t (nil))))
+ (term-blue-inv-face ((t (nil))))
+ (term-blue-ul-face ((t (nil))))
+ (term-bluebg ((t (nil))))
+ (term-bold ((t (nil))))
+ (term-cyan ((t (nil))))
+ (term-cyan-bold-face ((t (nil))))
+ (term-cyan-face ((t (nil))))
+ (term-cyan-inv-face ((t (nil))))
+ (term-cyan-ul-face ((t (nil))))
+ (term-cyanbg ((t (nil))))
+ (term-default ((t (nil))))
+ (term-default-bg ((t (nil))))
+ (term-default-bg-inv ((t (nil))))
+ (term-default-bold-face ((t (nil))))
+ (term-default-face ((t (nil))))
+ (term-default-fg ((t (nil))))
+ (term-default-fg-inv ((t (nil))))
+ (term-default-inv-face ((t (nil))))
+ (term-default-ul-face ((t (nil))))
+ (term-green ((t (nil))))
+ (term-green-bold-face ((t (nil))))
+ (term-green-face ((t (nil))))
+ (term-green-inv-face ((t (nil))))
+ (term-green-ul-face ((t (nil))))
+ (term-greenbg ((t (nil))))
+ (term-invisible ((t (nil))))
+ (term-invisible-inv ((t (nil))))
+ (term-magenta ((t (nil))))
+ (term-magenta-bold-face ((t (nil))))
+ (term-magenta-face ((t (nil))))
+ (term-magenta-inv-face ((t (nil))))
+ (term-magenta-ul-face ((t (nil))))
+ (term-magentabg ((t (nil))))
+ (term-red ((t (nil))))
+ (term-red-bold-face ((t (nil))))
+ (term-red-face ((t (nil))))
+ (term-red-inv-face ((t (nil))))
+ (term-red-ul-face ((t (nil))))
+ (term-redbg ((t (nil))))
+ (term-underline ((t (nil))))
+ (term-white ((t (nil))))
+ (term-white-bold-face ((t (nil))))
+ (term-white-face ((t (nil))))
+ (term-white-inv-face ((t (nil))))
+ (term-white-ul-face ((t (nil))))
+ (term-whitebg ((t (nil))))
+ (term-yellow ((t (nil))))
+ (term-yellow-bold-face ((t (nil))))
+ (term-yellow-face ((t (nil))))
+ (term-yellow-inv-face ((t (nil))))
+ (term-yellow-ul-face ((t (nil))))
+ (term-yellowbg ((t (nil))))
+ (tex-math-face ((t (nil))))
+ (texinfo-heading-face ((t (nil))))
+ (text-cursor ((t (nil))))
+ (tool-bar ((t (nil))))
+ (tooltip ((t (nil))))
+ (trailing-whitespace ((t (nil))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (nil))))
+ (vc-annotate-face-0046FF ((t (nil))))
+ (vcursor ((t (nil))))
+ (vertical-divider ((t (nil))))
+ (vhdl-font-lock-attribute-face ((t (nil))))
+ (vhdl-font-lock-directive-face ((t (nil))))
+ (vhdl-font-lock-enumvalue-face ((t (nil))))
+ (vhdl-font-lock-function-face ((t (nil))))
+ (vhdl-font-lock-generic-/constant-face ((t (nil))))
+ (vhdl-font-lock-prompt-face ((t (nil))))
+ (vhdl-font-lock-reserved-words-face ((t (nil))))
+ (vhdl-font-lock-translate-off-face ((t (nil))))
+ (vhdl-font-lock-type-face ((t (nil))))
+ (vhdl-font-lock-variable-face ((t (nil))))
+ (vhdl-speedbar-architecture-face ((t (nil))))
+ (vhdl-speedbar-architecture-selected-face ((t (nil))))
+ (vhdl-speedbar-configuration-face ((t (nil))))
+ (vhdl-speedbar-configuration-selected-face ((t (nil))))
+ (vhdl-speedbar-entity-face ((t (nil))))
+ (vhdl-speedbar-entity-selected-face ((t (nil))))
+ (vhdl-speedbar-instantiation-face ((t (nil))))
+ (vhdl-speedbar-instantiation-selected-face ((t (nil))))
+ (vhdl-speedbar-package-face ((t (nil))))
+ (vhdl-speedbar-package-selected-face ((t (nil))))
+ (vhdl-speedbar-subprogram-face ((t (nil))))
+ (viper-minibuffer-emacs-face ((t (nil))))
+ (viper-minibuffer-insert-face ((t (nil))))
+ (viper-minibuffer-vi-face ((t (nil))))
+ (viper-replace-overlay-face ((t (nil))))
+ (viper-search-face ((t (nil))))
+ (vm-xface ((t (nil))))
+ (vmpc-pre-sig-face ((t (nil))))
+ (vmpc-sig-face ((t (nil))))
+ (w3m-anchor-face ((t (nil))))
+ (w3m-arrived-anchor-face ((t (nil))))
+ (w3m-header-line-location-content-face ((t (nil))))
+ (w3m-header-line-location-title-face ((t (nil))))
+ (white ((t (nil))))
+ (widget ((t (nil))))
+ (widget-button-face ((t (nil))))
+ (widget-button-pressed-face ((t (nil))))
+ (widget-documentation-face ((t (nil))))
+ (widget-field-face ((t (nil))))
+ (widget-inactive-face ((t (nil))))
+ (widget-single-line-field-face ((t (nil))))
+ (woman-addition-face ((t (nil))))
+ (woman-bold-face ((t (nil))))
+ (woman-italic-face ((t (nil))))
+ (woman-unknown-face ((t (nil))))
+ (x-face ((t (nil))))
+ (xrdb-option-name-face ((t (nil))))
+ (xref-keyword-face ((t (nil))))
+ (xref-list-default-face ((t (nil))))
+ (xref-list-pilot-face ((t (nil))))
+ (xref-list-symbol-face ((t (nil))))
+ (yellow ((t (nil))))
+ (zmacs-region ((t (nil)))))))
+
+(defun color-theme-feng-shui ()
+ "Color theme by walterh@rocketmail.com (www.xanadb.com), created
+ 2003-10-16. Evolved from color-theme-katester"
+ (interactive)
+ (color-theme-install
+ '(color-theme-feng-shui
+ ((background-color . "ivory")
+ (background-mode . light)
+ (border-color . "black")
+ (cursor-color . "slateblue")
+ (foreground-color . "black")
+ (mouse-color . "slateblue"))
+ ((help-highlight-face . underline)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . highlight)
+ (widget-mouse-face . highlight))
+ (default ((t (:stipple nil :background "ivory" :foreground "black"
+:inverse-video nil :box nil :strike-through nil :overline nil
+:underline nil :slant normal :weight normal :height 90 :width normal
+:family "outline-courier new"))))
+ (bold ((t (:bold t :weight bold))))
+ (bold-italic ((t (:italic t :bold t :slant italic :weight bold))))
+ (border ((t (:background "black"))))
+ (cursor ((t (:background "slateblue" :foreground "black"))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:foreground "black"))))
+ (font-lock-comment-face ((t (:italic t :background "seashell"
+:slant italic))))
+ (font-lock-constant-face ((t (:foreground "darkblue"))))
+ (font-lock-doc-face ((t (:background "lemonChiffon"))))
+ (font-lock-function-name-face ((t (:bold t :underline t :weight
+bold))))
+ (font-lock-keyword-face ((t (:foreground "blue"))))
+ (font-lock-string-face ((t (:background "lemonChiffon"))))
+ (font-lock-type-face ((t (:foreground "black"))))
+ (font-lock-variable-name-face ((t (:foreground "black"))))
+ (font-lock-warning-face ((t (:bold t :foreground "Red" :weight
+bold))))
+ (fringe ((t (:background "grey95"))))
+ (header-line ((t (:bold t :weight bold :underline t :background
+"grey90" :foreground "grey20" :box nil))))
+ (highlight ((t (:background "mistyRose" :foreground "black"))))
+ (isearch ((t (:background "magenta4" :foreground
+"lightskyblue1"))))
+ (isearch-lazy-highlight-face ((t (:background "paleturquoise"))))
+ (italic ((t (:italic t :slant italic))))
+ (menu ((t (nil))))
+ (mode-line ((t (:bold t :background "mistyRose" :foreground "navy"
+:underline t :weight bold))))
+ (mouse ((t (:background "slateblue"))))
+ (region ((t (:background "lavender" :foreground "black"))))
+ (scroll-bar ((t (nil))))
+ (secondary-selection ((t (:background "yellow"))))
+ (tool-bar ((t (:background "grey75" :foreground "black" :box
+(:line-width 1 :style released-button)))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv"))))
+ (widget-button-face ((t (:bold t :weight bold))))
+ (widget-button-pressed-face ((t (:foreground "red"))))
+ (widget-documentation-face ((t (:foreground "dark green"))))
+ (widget-field-face ((t (:background "gray85"))))
+ (widget-inactive-face ((t (:foreground "dim gray"))))
+ (widget-single-line-field-face ((t (:background "gray85")))))))
+
+
+(defun color-theme-renegade ()
+ "Renegade BBS styled color theme. Works well in X and terminals.
+Created by Dave Benjamin <ramen@ramenfest.com> Dec 23 2005."
+ (interactive)
+ (color-theme-install
+ '(color-theme-renegade
+ ((background-color . "black")
+ (background-mode . dark)
+ (border-color . "black")
+ (cursor-color . "black")
+ (foreground-color . "cyan3")
+ (mouse-color . "white"))
+ (default ((t (nil))))
+ (bold ((t (:bold t :foreground "cyan" :weight bold))))
+ (bold-italic ((t (:italic t :bold t :foreground "cyan" :slant italic :weight bold))))
+ (fixed-pitch ((t (:family "courier"))))
+ (font-lock-builtin-face ((t (:bold t :foreground "cornflower blue" :weight bold))))
+ (font-lock-comment-face ((t (:bold t :foreground "yellow" :weight bold))))
+ (font-lock-constant-face ((t (:foreground "magenta3"))))
+ (font-lock-doc-face ((t (:bold t :weight bold :foreground "red"))))
+ (font-lock-function-name-face ((t (:foreground "gray"))))
+ (font-lock-keyword-face ((t (:bold t :foreground "cyan" :weight bold))))
+ (font-lock-string-face ((t (:bold t :foreground "red" :weight bold))))
+ (font-lock-type-face ((t (:bold t :foreground "cyan" :weight bold))))
+ (font-lock-variable-name-face ((t (:foreground "cyan3"))))
+ (font-lock-warning-face ((t (:bold t :foreground "red" :weight bold))))
+ (fringe ((t (:background "gray32"))))
+ (highlight ((t (:background "blue"))))
+ (isearch ((t (:background "blue" :foreground "cyan3"))))
+ (isearch-lazy-highlight-face ((t (:background "turquoise3" :foreground "black"))))
+ (menu ((t (nil))))
+ (mode-line ((t (:bold t :background "blue3" :foreground "white" :box (:line-width -1 :style released-button) :weight bold))))
+ (mouse ((t (:background "white"))))
+ (region ((t (:bold t :background "white" :foreground "blue" :weight bold))))
+ (scroll-bar ((t (nil))))
+ (trailing-whitespace ((t (:background "red"))))
+ (underline ((t (:underline t))))
+ (variable-pitch ((t (:family "helv")))))))
+
+;;; color-theme-library.el ends here
diff --git a/emacs.d/vala-mode.el b/emacs.d/vala-mode.el
new file mode 100644
index 0000000..0358790
--- /dev/null
+++ b/emacs.d/vala-mode.el
@@ -0,0 +1,395 @@
+;;; vala-mode.el --- Vala mode derived mode
+
+;; Author: 2005 Dylan R. E. Moonfire
+;; 2008 Étienne BERSAC
+;; Maintainer: Étienne BERSAC <bersace03@laposte.net>
+;; Created: 2008 May the 4th
+;; Modified: May 2008
+;; Version: 0.1
+;; Keywords: vala languages oop
+
+;; 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 of the License, 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., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+;;
+;; See http://live.gnome.org/Vala for details about Vala language.
+;;
+;; This is a separate mode to implement the Vala constructs and
+;; font-locking. It is mostly the csharp-mode from
+;; http://mfgames.com/linux/csharp-mode with vala specific keywords
+;; and filename suffixes.
+;;
+;; Note: The interface used in this file requires CC Mode 5.30 or
+;; later.
+
+;;; .emacs (don't put in (require 'vala-mode))
+;; (autoload 'vala-mode "vala-mode" "Major mode for editing Vala code." t)
+;; (setq auto-mode-alist
+;; (append '(("\\.vala$" . vala-mode)) auto-mode-alist))
+
+;;; Versions:
+;;
+;; 0.1 : Initial version based on csharp-mode
+;;
+
+;; This is a copy of the function in cc-mode which is used to handle
+;; the eval-when-compile which is needed during other times.
+(defun c-filter-ops (ops opgroup-filter op-filter &optional xlate)
+ ;; See cc-langs.el, a direct copy.
+ (unless (listp (car-safe ops))
+ (setq ops (list ops)))
+ (cond ((eq opgroup-filter t)
+ (setq opgroup-filter (lambda (opgroup) t)))
+ ((not (functionp opgroup-filter))
+ (setq opgroup-filter `(lambda (opgroup)
+ (memq opgroup ',opgroup-filter)))))
+ (cond ((eq op-filter t)
+ (setq op-filter (lambda (op) t)))
+ ((stringp op-filter)
+ (setq op-filter `(lambda (op)
+ (string-match ,op-filter op)))))
+ (unless xlate
+ (setq xlate 'identity))
+ (c-with-syntax-table (c-lang-const c-mode-syntax-table)
+ (delete-duplicates
+ (mapcan (lambda (opgroup)
+ (when (if (symbolp (car opgroup))
+ (when (funcall opgroup-filter (car opgroup))
+ (setq opgroup (cdr opgroup))
+ t)
+ t)
+ (mapcan (lambda (op)
+ (when (funcall op-filter op)
+ (let ((res (funcall xlate op)))
+ (if (listp res) res (list res)))))
+ opgroup)))
+ ops)
+ :test 'equal)))
+
+;; This inserts the bulk of the code.
+(require 'cc-mode)
+
+;; These are only required at compile time to get the sources for the
+;; language constants. (The cc-fonts require and the font-lock
+;; related constants could additionally be put inside an
+;; (eval-after-load "font-lock" ...) but then some trickery is
+;; necessary to get them compiled.)
+(eval-when-compile
+ (let ((load-path
+ (if (and (boundp 'byte-compile-dest-file)
+ (stringp byte-compile-dest-file))
+ (cons (file-name-directory byte-compile-dest-file) load-path)
+ load-path)))
+ (load "cc-mode" nil t)
+ (load "cc-fonts" nil t)
+ (load "cc-langs" nil t)))
+
+(eval-and-compile
+ ;; Make our mode known to the language constant system. Use Java
+ ;; mode as the fallback for the constants we don't change here.
+ ;; This needs to be done also at compile time since the language
+ ;; constants are evaluated then.
+ (c-add-language 'vala-mode 'java-mode))
+
+;; Java uses a series of regexes to change the font-lock for class
+;; references. The problem comes in because Java uses Pascal (leading
+;; space in names, SomeClass) for class and package names, but
+;; Camel-casing (initial lowercase, upper case in words,
+;; i.e. someVariable) for variables.
+;;(error (byte-compile-dest-file))
+;;(error (c-get-current-file))
+(c-lang-defconst c-opt-after-id-concat-key
+ vala (if (c-lang-const c-opt-identifier-concat-key)
+ (c-lang-const c-symbol-start)))
+
+(c-lang-defconst c-basic-matchers-before
+ vala `(
+;;;; Font-lock the attributes by searching for the
+;;;; appropriate regex and marking it as TODO.
+ ;;,`(,(concat "\\(" vala-attribute-regex "\\)")
+ ;; 0 font-lock-function-name-face)
+
+ ;; Put a warning face on the opener of unclosed strings that
+ ;; can't span lines. Later font
+ ;; lock packages have a `font-lock-syntactic-face-function' for
+ ;; this, but it doesn't give the control we want since any
+ ;; fontification done inside the function will be
+ ;; unconditionally overridden.
+ ,(c-make-font-lock-search-function
+ ;; Match a char before the string starter to make
+ ;; `c-skip-comments-and-strings' work correctly.
+ (concat ".\\(" c-string-limit-regexp "\\)")
+ '((c-font-lock-invalid-string)))
+
+ ;; Fontify keyword constants.
+ ,@(when (c-lang-const c-constant-kwds)
+ (let ((re (c-make-keywords-re nil
+ (c-lang-const c-constant-kwds))))
+ `((eval . (list ,(concat "\\<\\(" re "\\)\\>")
+ 1 c-constant-face-name)))))
+
+ ;; Fontify all keywords except the primitive types.
+ ,`(,(concat "\\<" (c-lang-const c-regular-keywords-regexp))
+ 1 font-lock-keyword-face)
+
+ ;; Fontify leading identifiers in fully
+ ;; qualified names like "Foo.Bar".
+ ,@(when (c-lang-const c-opt-identifier-concat-key)
+ `((,(byte-compile
+ `(lambda (limit)
+ (while (re-search-forward
+ ,(concat "\\(\\<" ; 1
+ "\\(" (c-lang-const c-symbol-key)
+ "\\)" ; 2
+ "[ \t\n\r\f\v]*"
+ (c-lang-const
+ c-opt-identifier-concat-key)
+ "[ \t\n\r\f\v]*"
+ "\\)"
+ "\\("
+ (c-lang-const
+ c-opt-after-id-concat-key)
+ "\\)")
+ limit t)
+ (unless (progn
+ (goto-char (match-beginning 0))
+ (c-skip-comments-and-strings limit))
+ (or (get-text-property (match-beginning 2) 'face)
+ (c-put-font-lock-face (match-beginning 2)
+ (match-end 2)
+ c-reference-face-name))
+ (goto-char (match-end 1)))))))))
+ ))
+
+;; Vala does not allow a leading qualifier operator. It also doesn't
+;; allow the ".*" construct of Java. So, we redo this regex without
+;; the "\\|\\*" regex.
+(c-lang-defconst c-identifier-key
+ vala (concat "\\(" (c-lang-const c-symbol-key) "\\)" ; 1
+ (concat "\\("
+ "[ \t\n\r\f\v]*"
+ (c-lang-const c-opt-identifier-concat-key)
+ "[ \t\n\r\f\v]*"
+ (concat "\\("
+ "\\(" (c-lang-const c-symbol-key) "\\)"
+ "\\)")
+ "\\)*")))
+
+;; Vala has a few rules that are slightly different than Java for
+;; operators. This also removed the Java's "super" and replaces it
+;; with the Vala's "base".
+(c-lang-defconst c-operators
+ vala `((prefix "base")))
+
+;; Vala directives ?
+;; (c-lang-defconst c-opt-cpp-prefix
+;; csharp "^\\s *#.*")
+
+
+;; Vala uses the following assignment operators
+(c-lang-defconst c-assignment-operators
+ vala '("=" "*=" "/=" "%=" "+=" "-=" ">>=" "<<="
+ "&=" "^=" "|=" "++" "--"))
+
+;; This defines the primative types for Vala
+(c-lang-defconst c-primitive-type-kwds
+ vala '("void" "char" "int" "float" "double" "string"))
+
+;; The keywords that define that the following is a type, such as a
+;; class definition.
+(c-lang-defconst c-type-prefix-kwds
+ vala '("class" "interface" "struct" "enum" "signal"))
+
+;; Type modifier keywords. They appear anywhere in types, but modifiy
+;; instead create one.
+(c-lang-defconst c-type-modifier-kwds
+ vala '("const"))
+
+;; Structures that are similiar to classes.
+(c-lang-defconst c-class-decl-kwds
+ vala '("class" "interface"))
+
+;; The various modifiers used for class and method descriptions.
+(c-lang-defconst c-modifier-kwds
+ vala '("public" "partial" "private" "const" "abstract"
+ "protected" "ref" "in" "out" "static" "virtual"
+ "override" "params" "internal" "weak" "owned"
+ "unowned"))
+
+;; We don't use the protection level stuff because it breaks the
+;; method indenting. Not sure why, though.
+(c-lang-defconst c-protection-kwds
+ vala nil)
+
+;; Define the keywords that can have something following after them.
+(c-lang-defconst c-type-list-kwds
+ vala '("struct" "class" "interface" "is" "as"
+ "delegate" "event" "set" "get" "add" "remove"
+ "callback" "signal" "var" "default"))
+
+;; This allows the classes after the : in the class declartion to be
+;; fontified.
+(c-lang-defconst c-typeless-decl-kwds
+ vala '(":"))
+
+;; Sets up the enum to handle the list properly
+(c-lang-defconst c-brace-list-decl-kwds
+ vala '("enum" "errordomain"))
+
+;; We need to remove Java's package keyword
+(c-lang-defconst c-ref-list-kwds
+ vala '("using" "namespace" "construct"))
+
+;; Follow-on blocks that don't require a brace
+(c-lang-defconst c-block-stmt-2-kwds
+ vala '("for" "if" "switch" "while" "catch" "foreach" "lock"))
+
+;; Statements that break out of braces
+(c-lang-defconst c-simple-stmt-kwds
+ vala '("return" "continue" "break" "throw"))
+
+;; Statements that allow a label
+;; TODO?
+(c-lang-defconst c-before-label-kwds
+ vala nil)
+
+;; Constant keywords
+(c-lang-defconst c-constant-kwds
+ vala '("true" "false" "null"))
+
+;; Keywords that start "primary expressions."
+(c-lang-defconst c-primary-expr-kwds
+ vala '("this" "base"))
+
+;; We need to treat namespace as an outer block to class indenting
+;; works properly.
+(c-lang-defconst c-other-block-decl-kwds
+ vala '("namespace"))
+
+;; We need to include the "in" for the foreach
+(c-lang-defconst c-other-kwds
+ vala '("in" "sizeof" "typeof"))
+
+(require 'cc-awk)
+
+(c-lang-defconst c-at-vsemi-p-fn
+ vala 'c-awk-at-vsemi-p)
+
+
+(defcustom vala-font-lock-extra-types nil
+ "*List of extra types (aside from the type keywords) to recognize in Vala mode.
+Each list item should be a regexp matching a single identifier.")
+
+(defconst vala-font-lock-keywords-1 (c-lang-const c-matchers-1 vala)
+ "Minimal highlighting for Vala mode.")
+
+(defconst vala-font-lock-keywords-2 (c-lang-const c-matchers-2 vala)
+ "Fast normal highlighting for Vala mode.")
+
+(defconst vala-font-lock-keywords-3 (c-lang-const c-matchers-3 vala)
+ "Accurate normal highlighting for Vala mode.")
+
+(defvar vala-font-lock-keywords vala-font-lock-keywords-3
+ "Default expressions to highlight in Vala mode.")
+
+(defvar vala-mode-syntax-table
+ nil
+ "Syntax table used in vala-mode buffers.")
+(or vala-mode-syntax-table
+ (setq vala-mode-syntax-table
+ (funcall (c-lang-const c-make-mode-syntax-table vala))))
+
+(defvar vala-mode-abbrev-table nil
+ "Abbreviation table used in vala-mode buffers.")
+(c-define-abbrev-table 'vala-mode-abbrev-table
+ ;; Keywords that if they occur first on a line
+ ;; might alter the syntactic context, and which
+ ;; therefore should trig reindentation when
+ ;; they are completed.
+ '(("else" "else" c-electric-continued-statement 0)
+ ("while" "while" c-electric-continued-statement 0)
+ ("catch" "catch" c-electric-continued-statement 0)
+ ("finally" "finally" c-electric-continued-statement 0)))
+
+(defvar vala-mode-map (let ((map (c-make-inherited-keymap)))
+ ;; Add bindings which are only useful for Vala
+ map)
+ "Keymap used in vala-mode buffers.")
+
+;;(easy-menu-define vala-menu vala-mode-map "Vala Mode Commands"
+;; ;; Can use `vala' as the language for `c-mode-menu'
+;; ;; since its definition covers any language. In
+;; ;; this case the language is used to adapt to the
+;; ;; nonexistence of a cpp pass and thus removing some
+;; ;; irrelevant menu alternatives.
+;; (cons "Vala" (c-lang-const c-mode-menu vala)))
+
+;;; Autoload mode trigger
+(add-to-list 'auto-mode-alist '("\\.vala$" . vala-mode))
+(add-to-list 'auto-mode-alist '("\\.vapi$" . vala-mode))
+
+;; Custom variables
+(defcustom vala-mode-hook nil
+ "*Hook called by `vala-mode'."
+ :type 'hook
+ :group 'c)
+
+;;; The entry point into the mode
+;;;###autoload
+(defun vala-mode ()
+ "Major mode for editing Vala code.
+This is a simple example of a separate mode derived from CC Mode
+to support a language with syntax similar to
+C#/C/C++/ObjC/Java/IDL/Pike.
+
+The hook `c-mode-common-hook' is run with no args at mode
+initialization, then `vala-mode-hook'.
+
+Key bindings:
+\\{vala-mode-map}"
+ (interactive)
+ (kill-all-local-variables)
+ (c-initialize-cc-mode t)
+ (set-syntax-table vala-mode-syntax-table)
+ (setq major-mode 'vala-mode
+ mode-name "Vala"
+ local-abbrev-table vala-mode-abbrev-table
+ abbrev-mode t)
+ (use-local-map c-mode-map)
+ ;; `c-init-language-vars' is a macro that is expanded at compile
+ ;; time to a large `setq' with all the language variables and their
+ ;; customized values for our language.
+ (c-init-language-vars vala-mode)
+ ;; `c-common-init' initializes most of the components of a CC Mode
+ ;; buffer, including setup of the mode menu, font-lock, etc.
+ ;; There's also a lower level routine `c-basic-common-init' that
+ ;; only makes the necessary initialization to get the syntactic
+ ;; analysis and similar things working.
+ (c-common-init 'vala-mode)
+ ;;(easy-menu-add vala-menu)
+ (c-set-style "linux")
+ (setq indent-tabs-mode t)
+ (setq c-basic-offset 4)
+ (setq tab-width 4)
+ (c-toggle-auto-newline -1)
+ (c-toggle-hungry-state -1)
+ (run-hooks 'c-mode-common-hook)
+ (run-hooks 'vala-mode-hook)
+ (c-update-modeline))
+
+(provide 'vala-mode)
+
+;;; vala-mode.el ends here
diff --git a/emacs.d/zenburn.el b/emacs.d/zenburn.el
new file mode 100644
index 0000000..1238f3c
--- /dev/null
+++ b/emacs.d/zenburn.el
@@ -0,0 +1,1179 @@
+;;; zenburn.el --- just some alien fruit salad to keep you in the zone
+;; Copyright (C) 2003, 2004, 2005, 2006 Daniel Brockman
+;; Copyright (C) 2009 Adrian C., Bastien Guerry
+
+;; Author: Daniel Brockman <daniel@brockman.se>
+;; URL: http://www.brockman.se/software/zenburn/zenburn.el
+;; Updated: 2009-07-08 05:27
+
+;; Adrian C. and Bastien Guerry added org-mode faces.
+
+;; This file 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 of
+;; the License, or (at your option) any later version.
+
+;; This file 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 GNU Emacs; if not, write to the Free
+;; Software Foundation, 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Some packages ship with broken implementations of `format-spec';
+;; for example, stable versions of TRAMP and ERC do this. To fix
+;; this, you can put the following at the end of your ~/.emacs:
+
+;; (unless (zenburn-format-spec-works-p)
+;; (zenburn-define-format-spec))
+
+;; Thanks to Jani Nurminen, who created the original zenburn color
+;; theme for vim. I'm just copying him. :-)
+
+;;; Short-Term Wishlist:
+
+;; Theme the ansi-term faces `term-red', etc., and the ERC faces
+;; `fg:erc-color-face1', etc.
+
+;; Theme `gnus-server-offline-face', `gnus-server-opened-face', and
+;; `gnus-server-denied-face'. First, find out what they hell they do.
+
+;; Theme `gnus-emphasis-highlight-words' after finding out what it
+;; does.
+
+;; Theme `emms-stream-name-face' and `emms-stream-url-face'.
+
+;; Theme `ido-indicator-face'.
+
+;;; Code:
+
+(require 'color-theme)
+
+(defvar zenburn-fg "#dcdccc")
+(defvar zenburn-bg "#3f3f3f")
+(defvar zenburn-bg+1 "#4f4f4f")
+(defvar zenburn-bg+2 "#5f5f5f")
+(defvar zenburn-red+1 "#dca3a3")
+(defvar zenburn-red "#cc9393")
+(defvar zenburn-red-1 "#bc8383")
+(defvar zenburn-red-2 "#ac7373")
+(defvar zenburn-red-3 "#9c6363")
+(defvar zenburn-red-4 "#8c5353")
+(defvar zenburn-orange "#dfaf8f")
+(defvar zenburn-yellow "#f0dfaf")
+(defvar zenburn-yellow-1 "#e0cf9f")
+(defvar zenburn-yellow-2 "#d0bf8f")
+(defvar zenburn-green-1 "#5f7f5f")
+(defvar zenburn-green "#7f9f7f")
+(defvar zenburn-green+1 "#8fb28f")
+(defvar zenburn-green+2 "#9fc59f")
+(defvar zenburn-green+3 "#afd8af")
+(defvar zenburn-green+4 "#bfebbf")
+(defvar zenburn-cyan "#93e0e3")
+(defvar zenburn-blue+1 "#94bff3")
+(defvar zenburn-blue "#8cd0d3")
+(defvar zenburn-blue-1 "#7cb8bb")
+(defvar zenburn-blue-2 "#6ca0a3")
+(defvar zenburn-blue-3 "#5c888b")
+(defvar zenburn-blue-4 "#4c7073")
+(defvar zenburn-magenta "#dc8cc3")
+
+(eval-after-load 'term
+ '(setq ansi-term-color-vector
+ (vector 'unspecified zenburn-bg
+ zenburn-red zenburn-green
+ zenburn-yellow zenburn-blue+1
+ zenburn-magenta zenburn-cyan)))
+
+(defvar font-lock-pseudo-keyword-face 'font-lock-pseudo-keyword-face)
+(defvar font-lock-operator-face 'font-lock-operator-face)
+
+(defun zenburn-format-spec-works-p ()
+ (and (fboundp 'format-spec)
+ (= (next-property-change
+ 0 (format-spec #("<%x>" 0 4 (face (:weight bold)))
+ '((?x . "foo"))) 4) 4)))
+
+(defun zenburn-format-spec (format specification)
+ "Return a string based on FORMAT and SPECIFICATION.
+FORMAT is a string containing `format'-like specs like \"bash %u %k\",
+while SPECIFICATION is an alist mapping from format spec characters
+to values."
+ (with-temp-buffer
+ (insert format)
+ (goto-char (point-min))
+ (while (search-forward "%" nil t)
+ (cond
+ ;; Quoted percent sign.
+ ((eq (char-after) ?%)
+ (delete-char 1))
+ ;; Valid format spec.
+ ((looking-at "\\([-0-9.]*\\)\\([a-zA-Z]\\)")
+ (let* ((num (match-string 1))
+ (spec (string-to-char (match-string 2)))
+ (val (cdr (assq spec specification))))
+ (unless val
+ (error "Invalid format character: %s" spec))
+ (let ((text (format (concat "%" num "s") val)))
+ (insert-and-inherit text)
+ ;; Delete the specifier body.
+ (delete-region (+ (match-beginning 0) (length text))
+ (+ (match-end 0) (length text)))
+ ;; Delete the percent sign.
+ (delete-region (1- (match-beginning 0)) (match-beginning 0)))))
+ ;; Signal an error on bogus format strings.
+ (t
+ (error "Invalid format string"))))
+ (buffer-string)))
+
+(defun zenburn-define-format-spec ()
+ (interactive)
+ (fset 'format-spec #'zenburn-format-spec))
+
+(unless (zenburn-format-spec-works-p)
+ (zenburn-define-format-spec))
+
+(eval-after-load 'format-spec
+ '(unless (zenburn-format-spec-works-p)
+ (zenburn-define-format-spec)))
+
+(setq-default mode-line-buffer-identification
+ (list (propertize "%12b" 'face
+ (list :weight 'bold
+ :foreground zenburn-yellow))))
+(setq-default mode-line-frame-identification "")
+(setq-default erc-mode-line-format
+ (concat (propertize "%t" 'face
+ (list :weight 'bold
+ :foreground zenburn-yellow))
+ " %a"))
+
+(setq gnus-logo-colors `(,zenburn-bg+2 ,zenburn-bg+1)
+ gnus-mode-line-image-cache
+ '(image :type xpm :ascent center :data "/* XPM */
+static char *gnus-pointer[] = {
+/* width height num_colors chars_per_pixel */
+\" 18 11 2 1\",
+/* colors */
+\". c #dcdccc\",
+\"# c None s None\",
+/* pixels */
+\"######..##..######\",
+\"#####........#####\",
+\"#.##.##..##...####\",
+\"#...####.###...##.\",
+\"#..###.######.....\",
+\"#####.########...#\",
+\"###########.######\",
+\"####.###.#..######\",
+\"######..###.######\",
+\"###....####.######\",
+\"###..######.######\"};"))
+
+(defun zenburn-make-face-alias-clauses (alias-symbols)
+ (let (clauses)
+ (dolist (alias-symbol alias-symbols clauses)
+ (let ((alias-name (symbol-name alias-symbol)))
+ (if (not (string-match "-face" alias-name))
+ (error "Invalid face alias: %s" alias-name)
+ (let ((target-name (replace-regexp-in-string
+ ".*\\(-face\\)" ""
+ alias-name nil nil 1)))
+ (push `(,(intern alias-name)
+ ((t (:inherit ,(intern target-name)))))
+ clauses)))))))
+
+;;;###autoload
+(defun color-theme-zenburn ()
+ "Just some alien fruit salad to keep you in the zone."
+ (interactive)
+ (color-theme-install
+ (append
+ (list 'color-theme-zenburn
+ `((background-color . ,zenburn-bg)
+ (background-mode . dark)
+ (border-color . ,zenburn-bg)
+ (foreground-color . ,zenburn-fg)
+ (mouse-color . ,zenburn-fg))
+ `((emms-mode-line-icon-color . ,zenburn-fg)
+ (goto-address-mail-face . italic)
+ (goto-address-mail-mouse-face . secondary-selection)
+ (goto-address-url-face . bold)
+ (goto-address-url-mouse-face . hover-highlight)
+ (help-highlight-face . hover-highlight)
+ (imaxima-label-color . ,zenburn-yellow)
+ (imaxima-equation-color . ,zenburn-fg)
+ (list-matching-lines-face . bold)
+ (view-highlight-face . hover-highlight)
+ (widget-mouse-face . hover-highlight))
+
+ '(bold ((t (:weight bold))))
+ '(bold-italic ((t (:italic t :weight bold))))
+ `(default ((t (:background ,zenburn-bg :foreground ,zenburn-fg))))
+ '(fixed-pitch ((t (:weight bold))))
+ '(italic ((t (:slant italic))))
+ '(underline ((t (:underline t))))
+ ;; '(variable-pitch ((t (:font "-*-utopia-regular-r-*-*-12-*-*-*-*-*-*-*"))))
+
+ `(zenburn-background-1 ((t (:background ,zenburn-bg+1))))
+ `(zenburn-background-2 ((t (:background ,zenburn-bg+2))))
+
+ `(zenburn-primary-1 ((t (:foreground ,zenburn-yellow :weight bold))))
+ `(zenburn-primary-2 ((t (:foreground ,zenburn-orange :weight bold))))
+ '(zenburn-primary-3 ((t (:foreground "#dfdfbf" :weight bold))))
+ '(zenburn-primary-4 ((t (:foreground "#dca3a3" :weight bold))))
+ '(zenburn-primary-5 ((t (:foreground "#94bff3" :weight bold))))
+
+ '(zenburn-highlight-damp
+ ((t (:foreground "#88b090" :background "#2e3330"))))
+ '(zenburn-highlight-alerting
+ ((t (:foreground "#e37170" :background "#332323"))))
+ '(zenburn-highlight-subtle
+ ((t (:background "#464646"))))
+
+ '(zenburn-lowlight-1 ((t (:foreground "#606060"))))
+ '(zenburn-lowlight-2 ((t (:foreground "#708070"))))
+
+ `(zenburn-yellow ((t (:foreground ,zenburn-yellow))))
+ `(zenburn-orange ((t (:foreground ,zenburn-orange))))
+ `(zenburn-red ((t (:foreground ,zenburn-red))))
+ `(zenburn-green-1 ((t (:foreground ,zenburn-green-1))))
+ `(zenburn-green ((t (:foreground ,zenburn-green))))
+ `(zenburn-green+1 ((t (:foreground ,zenburn-green+1))))
+ `(zenburn-green+2 ((t (:foreground ,zenburn-green+2))))
+ `(zenburn-green+3 ((t (:foreground ,zenburn-green+3))))
+ `(zenburn-green+4 ((t (:foreground ,zenburn-green+4))))
+ `(zenburn-blue ((t (:foreground ,zenburn-blue))))
+ `(zenburn-blue-1 ((t (:foreground ,zenburn-blue-1))))
+ `(zenburn-blue-2 ((t (:foreground ,zenburn-blue-2))))
+ `(zenburn-blue-3 ((t (:foreground ,zenburn-blue-3))))
+ `(zenburn-blue-4 ((t (:foreground ,zenburn-blue-4))))
+
+ '(zenburn-title ((t (:inherit variable-pitch :weight bold))))
+
+ '(font-lock-builtin
+ ((t (:inherit zenburn-blue))))
+ '(font-lock-comment
+ ((t (:inherit zenburn-green))))
+ '(font-lock-comment-delimiter
+ ((t (:inherit zenburn-lowlight-2))))
+ '(font-lock-constant
+ ((t (:inherit zenburn-primary-4))))
+ '(font-lock-doc
+ ((t (:inherit zenburn-green+1))))
+ `(font-lock-function-name
+ ((t (:foreground ,zenburn-yellow))))
+ '(font-lock-keyword
+ ((t (:inherit zenburn-primary-1))))
+ '(font-lock-negation-char
+ ((t (:inherit zenburn-primary-1))))
+ '(font-lock-preprocessor
+ ((t (:inherit zenburn-blue))))
+ '(font-lock-string
+ ((t (:inherit zenburn-red))))
+ '(font-lock-type
+ ((t (:inherit zenburn-primary-3))))
+ `(font-lock-variable-name
+ ((t (:foreground ,zenburn-yellow))))
+ '(font-lock-warning
+ ((t (:inherit zenburn-highlight-alerting))))
+
+ '(font-lock-pseudo-keyword
+ ((t (:inherit zenburn-primary-2))))
+ '(font-lock-operator
+ ((t (:inherit zenburn-primary-3))))
+
+ '(term-default-bg ((t (nil))))
+ '(term-default-bg-inv ((t (nil))))
+ '(term-default-fg ((t (nil))))
+ '(term-default-fg-inv ((t (nil))))
+ '(term-invisible ((t (nil)))) ;; FIXME: Security risk?
+ '(term-invisible-inv ((t (nil))))
+ '(term-bold ((t (:weight bold))))
+ '(term-underline ((t (:underline t))))
+
+ ;; FIXME: Map these to ansi-term's faces (`term-red', etc.).
+ '(zenburn-term-dark-gray ((t (:foreground "#709080"))))
+ '(zenburn-term-light-blue ((t (:foreground "#94bff3"))))
+ '(zenburn-term-light-cyan ((t (:foreground "#93e0e3"))))
+ '(zenburn-term-light-green ((t (:foreground "#c3bf9f"))))
+ '(zenburn-term-light-magenta ((t (:foreground "#ec93d3"))))
+ '(zenburn-term-light-red ((t (:foreground "#dca3a3"))))
+ '(zenburn-term-light-yellow ((t (:foreground "#f0dfaf"))))
+ '(zenburn-term-white ((t (:foreground "#ffffff"))))
+
+ '(zenburn-term-black ((t (:foreground "#000000"))))
+ '(zenburn-term-dark-blue ((t (:foreground "#506070"))))
+ '(zenburn-term-dark-cyan ((t (:foreground "#8cd0d3"))))
+ '(zenburn-term-dark-green ((t (:foreground "#60b48a"))))
+ '(zenburn-term-dark-magenta ((t (:foreground "#dc8cc3"))))
+ '(zenburn-term-dark-red ((t (:foreground "#705050"))))
+ '(zenburn-term-dark-yellow ((t (:foreground "#dfaf8f"))))
+ `(zenburn-term-light-gray ((t (:foreground ,zenburn-fg))))
+
+ '(plain-widget-button
+ ((t (:weight bold))))
+ '(plain-widget-button-pressed
+ ((t (:inverse-video t))))
+ '(plain-widget-documentation
+ ((t (:inherit font-lock-doc))))
+ `(plain-widget-field
+ ((t (:background ,zenburn-bg+2))))
+ '(plain-widget-inactive
+ ((t (:strike-through t))))
+ `(plain-widget-single-line-field
+ ((t (:background ,zenburn-bg+2))))
+
+ `(fancy-widget-button
+ ((t (:background ,zenburn-bg+1
+ :box (:line-width 2 :style released-button)))))
+ `(fancy-widget-button-pressed
+ ((t (:background ,zenburn-bg+1
+ :box (:line-width 2 :style pressed-button)))))
+ `(fancy-widget-button-highlight
+ ((t (:background ,zenburn-bg+1
+ :box (:line-width 2 :style released-button)))))
+ `(fancy-widget-button-pressed-highlight
+ ((t (:background ,zenburn-bg+1
+ :box (:line-width 2 :style pressed-button)))))
+ '(fancy-widget-documentation
+ ((t (:inherit font-lock-doc))))
+ `(fancy-widget-field
+ ((t (:background ,zenburn-bg+2))))
+ '(fancy-widget-inactive
+ ((t (:strike-through t))))
+ `(fancy-widget-single-line-field
+ ((t (:background ,zenburn-bg+2))))
+
+ '(widget-button
+ ((t (:inherit plain-widget-button))))
+ '(widget-button-pressed
+ ((t (:inherit fancy-widget-button-pressed))))
+ '(widget-button-highlight
+ ((t (:inherit fancy-widget-button-highlight))))
+ '(widget-button-pressed-highlight
+ ((t (:inherit fancy-widget-button-pressed-highlight))))
+ '(widget-documentation
+ ((t (:inherit fancy-widget-documentation))))
+ '(widget-field
+ ((t (:inherit fancy-widget-field))))
+ '(widget-inactive
+ ((t (:inherit fancy-widget-inactive))))
+ '(widget-single-line-field
+ ((t (:inherit fancy-widget-single-line-field))))
+
+ `(border ((t (:background ,zenburn-bg))))
+ '(fringe ((t (:inherit zenburn-highlight-subtle))))
+ '(header-line ((t (:inherit zenburn-highlight-damp
+ :box (:color "#2e3330" :line-width 2)))))
+ '(mode-line ((t (:foreground "#acbc90" :background "#1e2320"
+ :box (:color "#1e2320" :line-width 2)))))
+ '(mode-line-inactive ((t (:background "#2e3330" :foreground "#88b090"
+ :box (:color "#2e3330" :line-width 2)))))
+ `(minibuffer-prompt ((t (:foreground ,zenburn-yellow))))
+ `(Buffer-menu-buffer ((t (:inherit zenburn-primary-1))))
+
+ '(region ((t (:foreground "#71d3b4" :background "#233323"))))
+ `(secondary-selection ((t (:foreground ,zenburn-fg :background "#506070"))))
+
+ '(trailing-whitespace ((t (:inherit font-lock-warning))))
+ '(highlight ((t (:underline t))))
+ '(paren ((t (:inherit zenburn-lowlight-1))))
+ '(show-paren-mismatch ((t (:inherit font-lock-warning))))
+ '(show-paren-match ((t (:inherit font-lock-keyword))))
+ '(match ((t (:weight bold))))
+
+ `(cursor ((t (:background ,zenburn-fg :foreground ,zenburn-bg))))
+ '(hover-highlight ((t (:underline t :foreground "#f8f893"))))
+ '(menu ((t nil)))
+ '(mouse ((t (:inherit zenburn-foreground))))
+ `(scroll-bar ((t (:background ,zenburn-bg+2))))
+ `(tool-bar ((t (:background ,zenburn-bg+2))))
+
+ '(ido-first-match ((t (:inherit zenburn-primary-1))))
+ '(ido-only-match ((t (:inherit zenburn-primary-2))))
+ `(ido-subdir ((t (:foreground ,zenburn-yellow))))
+
+ `(isearch ((t (:foreground ,zenburn-fg :background "#506070"))))
+ `(isearch-lazy-highlight
+ ((t (:foreground ,zenburn-fg :background "#1e2320" :weight normal))))
+
+ '(mtorus-highlight ((t (:inherit zenburn-highlight-bluish))))
+ '(mtorus-notify-highlight ((t (:inherit zenburn-primary-1))))
+
+ '(which-func ((t (:inherit mode-line))))
+
+ '(apt-utils-normal-package
+ ((t (:inherit zenburn-primary-1))))
+ '(apt-utils-virtual-package
+ ((t (:inherit zenburn-primary-2))))
+ '(apt-utils-field-keyword
+ ((t (:inherit font-lock-doc))))
+ '(apt-utils-field-contents
+ ((t (:inherit font-lock-comment))))
+ '(apt-utils-summary
+ ((t (:inherit bold))))
+ '(apt-utils-description
+ ((t (:inherit default))))
+ '(apt-utils-version
+ ((t (:inherit zenburn-blue))))
+ '(apt-utils-broken
+ ((t (:inherit font-lock-warning))))
+
+ '(breakpoint-enabled-bitmap ((t (:inherit zenburn-primary-1))))
+ '(breakpoint-disabled-bitmap ((t (:inherit font-lock-comment))))
+
+ '(calendar-today ((t (:underline nil :inherit zenburn-primary-2))))
+ '(diary ((t (:underline nil :inherit zenburn-primary-1))))
+ '(holiday ((t (:underline t :inherit zenburn-primary-4))))
+
+ '(bongo-unfilled-seek-bar ((t (:background "#606060"))))
+
+ '(change-log-date ((t (:inherit zenburn-blue))))
+
+ '(comint-highlight-input ((t (:inherit zenburn-primary-1))))
+ '(comint-highlight-prompt ((t (:inherit zenburn-primary-2))))
+
+ '(compilation-info ((t (:inherit zenburn-primary-1))))
+ '(compilation-warning ((t (:inherit font-lock-warning))))
+
+ ;; TODO
+ '(cua-rectangle ((t (:inherit region))))
+
+ '(custom-button
+ ((t (:inherit fancy-widget-button))))
+ '(custom-button-pressed
+ ((t (:inherit fancy-widget-button-pressed))))
+ '(custom-changed
+ ((t (:inherit zenburn-blue))))
+ '(custom-comment
+ ((t (:inherit font-lock-doc))))
+ '(custom-comment-tag
+ ((t (:inherit font-lock-doc))))
+ '(custom-documentation
+ ((t (:inherit font-lock-doc))))
+ '(custom-link
+ ((t (:inherit zenburn-yellow :underline t))))
+ '(custom-tag
+ ((t (:inherit zenburn-primary-2))))
+ '(custom-group-tag
+ ((t (:inherit zenburn-primary-1))))
+ '(custom-group-tag-1
+ ((t (:inherit zenburn-primary-4))))
+ '(custom-invalid
+ ((t (:inherit font-lock-warning))))
+ '(custom-modified
+ ((t (:inherit zenburn-primary-3))))
+ '(custom-rogue
+ ((t (:inhrit font-lock-warning))))
+ '(custom-saved
+ ((t (:underline t))))
+ '(custom-set
+ ((t (:inverse-video t :inherit zenburn-blue))))
+ '(custom-state
+ ((t (:inherit font-lock-comment))))
+ '(custom-variable-button
+ ((t (:weight bold :underline t))))
+ '(custom-variable-tag
+ ((t (:inherit zenburn-primary-2))))
+
+ '(dictionary-button ((t (:inherit fancy-widget-button))))
+ '(dictionary-reference ((t (:inherit zenburn-primary-1))))
+ '(dictionary-word-entry ((t (:inherit font-lock-keyword))))
+
+ '(diff-header ((t (:inherit zenburn-highlight-subtle))))
+ '(diff-index ((t (:inherit bold))))
+ '(diff-file-header ((t (:inherit bold))))
+ '(diff-hunk-header ((t (:inherit zenburn-highlight-subtle))))
+
+ '(diff-added ((t (:inherit zenburn-primary-3))))
+ '(diff-removed ((t (:inherit zenburn-blue))))
+ '(diff-context ((t (:inherit font-lock-comment))))
+
+ `(emms-pbi-song ((t (:foreground ,zenburn-yellow))))
+ '(emms-pbi-current ((t (:inherit zenburn-primary-1))))
+ '(emms-pbi-mark-marked ((t (:inherit zenburn-primary-2))))
+
+ '(erc-action ((t (:inherit erc-default))))
+ '(erc-bold ((t (:weight bold))))
+ '(erc-current-nick ((t (:inherit zenburn-primary-1))))
+ '(erc-dangerous-host ((t (:inherit font-lock-warning))))
+ `(erc-default ((t (:foreground ,zenburn-fg))))
+ '(erc-direct-msg ((t (:inherit erc-default))))
+ '(erc-error ((t (:inherit font-lock-warning))))
+ '(erc-fool ((t (:inherit zenburn-lowlight-1))))
+ '(erc-highlight ((t (:inherit hover-highlight))))
+ `(erc-input ((t (:foreground ,zenburn-yellow))))
+ '(erc-keyword ((t (:inherit zenburn-primary-1))))
+ '(erc-nick-default ((t (:inherit bold))))
+ '(erc-nick-msg ((t (:inherit erc-default))))
+ '(erc-notice ((t (:inherit zenburn-green))))
+ '(erc-pal ((t (:inherit zenburn-primary-3))))
+ '(erc-prompt ((t (:inherit zenburn-primary-2))))
+ '(erc-timestamp ((t (:inherit zenburn-green+1))))
+ '(erc-underline ((t (:inherit underline))))
+
+ '(circe-highlight-nick-face ((t (:inherit zenburn-primary-1))))
+ '(circe-my-message-face ((t (:inherit zenburn-yellow))))
+ '(circe-originator-face ((t (:inherit bold))))
+ '(circe-prompt-face ((t (:inherit zenburn-primary-1))))
+ '(circe-server-face ((t (:inherit font-lock-comment-face))))
+
+ '(rcirc-my-nick ((t (:inherit zenburn-primary-1))))
+ '(rcirc-other-nick ((t (:inherit bold))))
+ '(rcirc-bright-nick ((t (:foreground "white" :inherit rcirc-other-nick))))
+ '(rcirc-dim-nick ((t (:inherit font-lock-comment))))
+ '(rcirc-nick-in-message ((t (:inherit bold))))
+ '(rcirc-server ((t (:inherit font-lock-comment))))
+ '(rcirc-server-prefix ((t (:inherit font-lock-comment-delimiter))))
+ '(rcirc-timestamp ((t (:inherit font-lock-comment))))
+ '(rcirc-prompt ((t (:inherit zenburn-primary-1))))
+ '(rcirc-mode-line-nick ((t (:inherit zenburn-primary-1))))
+
+ '(eshell-prompt ((t (:inherit zenburn-primary-1))))
+ '(eshell-ls-archive ((t (:foreground "#c3bf9f" :weight bold))))
+ '(eshell-ls-backup ((t (:inherit font-lock-comment))))
+ '(eshell-ls-clutter ((t (:inherit font-lock-comment))))
+ `(eshell-ls-directory ((t (:foreground ,zenburn-blue+1 :weight bold))))
+ `(eshell-ls-executable ((t (:foreground ,zenburn-red+1 :weight bold))))
+ '(eshell-ls-unreadable ((t (:inherit zenburn-lowlight-1))))
+ '(eshell-ls-missing ((t (:inherit font-lock-warning))))
+ '(eshell-ls-product ((t (:inherit font-lock-doc))))
+ '(eshell-ls-special ((t (:inherit zenburn-primary-1))))
+ `(eshell-ls-symlink ((t (:foreground ,zenburn-cyan :weight bold))))
+
+ '(highlight-current-line ((t (:inherit zenburn-highlight-subtle))))
+
+ '(ibuffer-deletion ((t (:inherit zenburn-primary-2))))
+ '(ibuffer-marked ((t (:inherit zenburn-primary-1))))
+ '(ibuffer-special-buffer ((t (:inherit font-lock-doc))))
+ '(ibuffer-help-buffer ((t (:inherit font-lock-comment))))
+
+ '(message-cited-text ((t (:inherit font-lock-comment))))
+ ;;`(message-cited-text ((t (:foreground ,zenburn-blue))))
+ '(message-header-name ((t (:inherit zenburn-green+1))))
+ '(message-header-other ((t (:inherit zenburn-green))))
+ '(message-header-to ((t (:inherit zenburn-primary-1))))
+ '(message-header-from ((t (:inherit zenburn-primary-1))))
+ '(message-header-cc ((t (:inherit zenburn-primary-1))))
+ '(message-header-newsgroups ((t (:inherit zenburn-primary-1))))
+ '(message-header-subject ((t (:inherit zenburn-primary-2))))
+ '(message-header-xheader ((t (:inherit zenburn-green))))
+ '(message-mml ((t (:inherit zenburn-primary-1))))
+ '(message-separator ((t (:inherit font-lock-comment))))
+
+ '(gnus-header-name ((t (:inherit message-header-name))))
+ '(gnus-header-content ((t (:inherit message-header-other))))
+ '(gnus-header-from ((t (:inherit message-header-from))))
+ '(gnus-header-subject ((t (:inherit message-header-subject))))
+ '(gnus-header-newsgroups ((t (:inherit message-header-other))))
+
+ `(gnus-x-face ((t (:background ,zenburn-fg :foreground ,zenburn-bg))))
+
+ ;; (gnus-cite-1 ((t (:inherit message-cited-text))))
+ `(gnus-cite-1 ((t (:foreground ,zenburn-blue))))
+ `(gnus-cite-2 ((t (:foreground ,zenburn-blue-1))))
+ `(gnus-cite-3 ((t (:foreground ,zenburn-blue-2))))
+;; (gnus-cite-4 ((t (:foreground ,zenburn-blue-3))))
+;; (gnus-cite-5 ((t (:foreground ,zenburn-blue-4))))
+;; (gnus-cite-6 ((t (:foreground ,zenburn-red-4))))
+;; (gnus-cite-5 ((t (:foreground ,zenburn-red-3))))
+ `(gnus-cite-4 ((t (:foreground ,zenburn-green+2))))
+ `(gnus-cite-5 ((t (:foreground ,zenburn-green+1))))
+ `(gnus-cite-6 ((t (:foreground ,zenburn-green))))
+ `(gnus-cite-7 ((t (:foreground ,zenburn-red))))
+ `(gnus-cite-8 ((t (:foreground ,zenburn-red-1))))
+ `(gnus-cite-9 ((t (:foreground ,zenburn-red-2))))
+ `(gnus-cite-10 ((t (:foreground ,zenburn-yellow-1))))
+ `(gnus-cite-11 ((t (:foreground ,zenburn-yellow))))
+
+ `(gnus-group-news-1-empty ((t (:foreground ,zenburn-yellow))))
+ `(gnus-group-news-2-empty ((t (:foreground ,zenburn-green+3))))
+ `(gnus-group-news-3-empty ((t (:foreground ,zenburn-green+1))))
+ `(gnus-group-news-4-empty ((t (:foreground ,zenburn-blue-2))))
+ `(gnus-group-news-5-empty ((t (:foreground ,zenburn-blue-3))))
+ `(gnus-group-news-6-empty ((t (:inherit zenburn-lowlight-1))))
+ `(gnus-group-news-low-empty ((t (:inherit zenburn-lowlight-1))))
+
+ '(gnus-group-mail-1-empty ((t (:inherit gnus-group-news-1-empty))))
+ '(gnus-group-mail-2-empty ((t (:inherit gnus-group-news-2-empty))))
+ '(gnus-group-mail-3-empty ((t (:inherit gnus-group-news-3-empty))))
+ '(gnus-group-mail-4-empty ((t (:inherit gnus-group-news-4-empty))))
+ '(gnus-group-mail-5-empty ((t (:inherit gnus-group-news-5-empty))))
+ '(gnus-group-mail-6-empty ((t (:inherit gnus-group-news-6-empty))))
+ '(gnus-group-mail-low-empty ((t (:inherit gnus-group-news-low-empty))))
+
+ '(gnus-group-news-1 ((t (:bold t :inherit gnus-group-news-1-empty))))
+ '(gnus-group-news-2 ((t (:bold t :inherit gnus-group-news-2-empty))))
+ '(gnus-group-news-3 ((t (:bold t :inherit gnus-group-news-3-empty))))
+ '(gnus-group-news-4 ((t (:bold t :inherit gnus-group-news-4-empty))))
+ '(gnus-group-news-5 ((t (:bold t :inherit gnus-group-news-5-empty))))
+ '(gnus-group-news-6 ((t (:bold t :inherit gnus-group-news-6-empty))))
+ '(gnus-group-news-low ((t (:bold t :inherit gnus-group-news-low-empty))))
+
+ '(gnus-group-mail-1 ((t (:bold t :inherit gnus-group-mail-1-empty))))
+ '(gnus-group-mail-2 ((t (:bold t :inherit gnus-group-mail-2-empty))))
+ '(gnus-group-mail-3 ((t (:bold t :inherit gnus-group-mail-3-empty))))
+ '(gnus-group-mail-4 ((t (:bold t :inherit gnus-group-mail-4-empty))))
+ '(gnus-group-mail-5 ((t (:bold t :inherit gnus-group-mail-5-empty))))
+ '(gnus-group-mail-6 ((t (:bold t :inherit gnus-group-mail-6-empty))))
+ '(gnus-group-mail-low ((t (:bold t :inherit gnus-group-mail-low-empty))))
+
+ `(gnus-signature ((t (:foreground ,zenburn-yellow))))
+
+ '(gnus-summary-selected
+ ((t (:inherit zenburn-primary-1))))
+ '(gnus-summary-cancelled
+ ((t (:inherit zenburn-highlight-alerting))))
+
+ '(gnus-summary-low-ticked
+ ((t (:inherit zenburn-primary-2))))
+ '(gnus-summary-normal-ticked
+ ((t (:inherit zenburn-primary-2))))
+ '(gnus-summary-high-ticked
+ ((t (:inherit zenburn-primary-2))))
+
+ '(gnus-summary-low-unread
+ ((t (:inherit zenburn-foreground :weight normal))))
+ '(gnus-summary-normal-unread
+ ((t (:inherit zenburn-foreground :weight normal))))
+ '(gnus-summary-high-unread
+ ((t (:inherit zenburn-foreground :weight bold))))
+
+ '(gnus-summary-low-read
+ ((t (:inherit zenburn-green :weight normal))))
+ '(gnus-summary-normal-read
+ ((t (:inherit zenburn-green :weight normal))))
+ '(gnus-summary-high-read
+ ((t (:inherit zenburn-green :weight bold))))
+
+ '(gnus-summary-low-ancient
+ ((t (:inherit zenburn-blue :weight normal))))
+ '(gnus-summary-normal-ancient
+ ((t (:inherit zenburn-blue :weight normal))))
+ '(gnus-summary-high-ancient
+ ((t (:inherit zenburn-blue))))
+
+ '(help-argument-name ((t (:weight bold))))
+
+ ;; See also the variable definitions at the top of this file
+ '(imaxima-latex-error ((t (:inherit font-lock-warning))))
+
+ `(info-xref ((t (:foreground ,zenburn-yellow :weight bold))))
+ '(info-xref-visited ((t (:inherit info-xref :weight normal))))
+ '(info-header-xref ((t (:inherit info-xref))))
+ `(info-menu-star ((t (:foreground ,zenburn-orange :weight bold))))
+ `(info-menu-5 ((t (:inherit info-menu-star))))
+ '(info-node ((t (:weight bold))))
+ '(info-header-node ((t (:weight normal))))
+
+ '(jabber-roster-user-chatty
+ ((t (:inherit zenburn-primary-1))))
+ '(jabber-roster-user-online
+ ((t (:inherit zenburn-primary-2))))
+ '(jabber-roster-user-away
+ ((t (:inherit font-lock-doc))))
+ '(jabber-roster-user-xa
+ ((t (:inherit font-lock-comment))))
+ '(jabber-roster-user-offline
+ ((t (:inherit zenburn-lowlight-1))))
+ '(jabber-roster-user-dnd
+ ((t (:inherit zenburn-primary-5))))
+ '(jabber-roster-user-error
+ ((t (:inherit font-lock-warning))))
+
+ '(jabber-title-small
+ ((t (:inherit zenburn-title :height 1.2))))
+ '(jabber-title-medium
+ ((t (:inherit jabber-title-small :height 1.2))))
+ '(jabber-title-large
+ ((t (:inherit jabber-title-medium :height 1.2))))
+
+ '(jabber-chat-prompt-local
+ ((t (:inherit zenburn-primary-1))))
+ '(jabber-chat-prompt-foreign
+ ((t (:inherit zenburn-primary-2))))
+
+ '(jabber-rare-time-face
+ ((t (:inherit zenburn-green+1))))
+
+ '(jde-java-font-lock-modifier
+ ((t (:inherit zenburn-primary-2))))
+ '(jde-java-font-lock-doc-tag
+ ((t (:inherit zenburn-primary-1))))
+ '(jde-java-font-lock-constant
+ ((t (:inherit font-lock-constant))))
+ '(jde-java-font-lock-package
+ ((t (:inherit zenburn-primary-3))))
+ '(jde-java-font-lock-number
+ ((t (:inherit font-lock-constant))))
+ '(jde-java-font-lock-operator
+ ((t (:inherit font-lock-keyword))))
+ '(jde-java-font-lock-link
+ ((t (:inherit zenburn-primary-5 :underline t))))
+
+ '(keywiz-right ((t (:inherit zenburn-primary-1))))
+ '(keywiz-wrong ((t (:inherit font-lock-warning))))
+ '(keywiz-command ((t (:inherit zenburn-primary-2))))
+
+ '(font-latex-bold ((t (:inherit bold))))
+ '(font-latex-warning ((t (:inherit font-lock-warning))))
+ '(font-latex-sedate ((t (:inherit zenburn-primary-1))))
+ '(font-latex-title-4 ((t (:inherit zenburn-title))))
+
+ '(makefile-space ((t (:inherit font-lock-warning))))
+ '(makefile-shell ((t (nil))))
+ ;; This does not work very well because everything that's highlighted
+ ;; inside the shell region will get its own box.
+ ;; (makefile-shell ((t (:background "#4f4f4f"
+ ;; :box (:line-width 2 :color "#4f4f4f")))))
+
+ '(nxml-delimited-data ((t (:inherit font-lock-string))))
+ '(nxml-name ((t (:inherit zenburn-primary-1))))
+ '(nxml-ref ((t (:inherit zenburn-primary-5))))
+ '(nxml-delimiter ((t (:inherit default))))
+ '(nxml-text ((t (:inherit default))))
+
+ '(nxml-comment-content
+ ((t (:inherit font-lock-comment))))
+ '(nxml-comment-delimiter
+ ((t (:inherit nxml-comment-content))))
+ '(nxml-processing-instruction-target
+ ((t (:inherit zenburn-primary-2))))
+ '(nxml-processing-instruction-delimiter
+ ((t (:inherit nxml-processing-instruction-target))))
+ '(nxml-processing-instruction-content
+ ((t (:inherit nxml-processing-instruction-target))))
+ '(nxml-cdata-section-CDATA
+ ((t (:inherit zenburn-primary-4))))
+ '(nxml-cdata-section-delimiter
+ ((t (:inherit nxml-cdata-section-CDATA))))
+ '(nxml-cdata-section-content
+ ((t (:inherit nxml-text))))
+ '(nxml-entity-ref-name
+ ((t (:inherit zenburn-primary-5))))
+ '(nxml-entity-ref-delimiter
+ ((t (:inherit nxml-entity-ref-name))))
+ '(nxml-char-ref-number
+ ((t (:inherit nxml-entity-ref-name))))
+ '(nxml-char-ref-delimiter
+ ((t (:inherit nxml-entity-ref-delimiter))))
+
+ '(nxml-tag-delimiter ((t (:inherit default))))
+ '(nxml-tag-slash ((t (:inherit default))))
+ '(nxml-element-local-name ((t (:inherit zenburn-primary-1))))
+ '(nxml-element-prefix ((t (:inherit default))))
+ '(nxml-element-colon ((t (:inherit default))))
+
+ '(nxml-attribute-local-name
+ ((t (:inherit zenburn-primary-3))))
+ '(nxml-namespace-attribute-prefix
+ ((t (:inherit nxml-attribute-local-name))))
+ '(nxml-attribute-value
+ ((t (:inherit font-lock-string))))
+ '(nxml-attribute-value-delimiter
+ ((t (:inherit nxml-attribute-value))))
+ '(nxml-attribute-prefix
+ ((t (:inherit default))))
+ '(nxml-namespace-attribute-xmlns
+ ((t (:inherit nxml-attribute-prefix))))
+ '(nxml-attribute-colon
+ ((t (:inherit default))))
+ '(nxml-namespace-attribute-colon
+ ((t (:inherit nxml-attribute-colon))))
+
+ '(org-agenda-date-today ((t (:foreground "white"
+ :slant italic :weight bold))) t) ;; white
+ '(org-agenda-structure ((t (:inherit font-lock-comment-face)))) ;; zenburn-green
+ '(org-archived ((t (:foreground "#8f8f8f")))) ;; zenburn-bg slight lighter
+ '(org-column ((t (:height 98 :family "DejaVu Sans Mono")))) ;; n/a
+ '(org-checkbox ((t (:background "#5f5f5f" :foreground "white" ;; zenburn-fg on zenburn-bg+2
+ :box (:line-width 1 :style released-button))))) ;; - turn checkboxes into buttons
+ '(org-date ((t (:foreground "#8cd0d3" :underline t)))) ;; zenburn-blue
+ '(org-deadline-announce ((t (:foreground "#bc8383")))) ;; zenburn-red-1
+ '(org-done ((t (:bold t :weight bold :foreground "#afd8af")))) ;; zenburn-green+3
+ '(org-formula ((t (:foreground "#d0bf8f")))) ;; zenburn-yellow-2
+ '(org-headline-done ((t (:foreground "#afd8af")))) ;; zenburn-green+3
+ '(org-hide ((t (:foreground "#282828")))) ;; zenburn-bg slight darker
+ '(org-level-1 ((t (:foreground "#dfaf8f")))) ;; zenburn-orange
+ '(org-level-2 ((t (:foreground "#f0dfaf")))) ;; zenburn-yellow
+ '(org-level-3 ((t (:foreground "#8cd0d3")))) ;; zenburn-blue
+ '(org-level-4 ((t (:foreground "#93e0e3")))) ;; zenburn-cyan
+ '(org-level-5 ((t (:foreground "#7cb8bb")))) ;; zenburn-blue-1
+ '(org-level-6 ((t (:foreground "#6ca0a3")))) ;; zenburn-blue-2
+ '(org-level-7 ((t (:foreground "#5c888b")))) ;; zenburn-blue-3
+ '(org-level-8 ((t (:foreground "#4c7073")))) ;; zenburn-blue-4
+ '(org-link ((t (:foreground "#d0bf8f" :underline t)))) ;; zenburn-yellow-2
+ ;'(org-priority faces TODO
+ '(org-scheduled ((t (:foreground "#bfebbf")))) ;; zenburn-green+4
+ '(org-scheduled-previously ((t (:foreground "#8c5353")))) ;; zenburn-red-4
+ '(org-scheduled-today ((t (:foreground "#94bff3")))) ;; zenburn-blue+1
+ '(org-special-keyword ((t (:foreground "#e0cf9f")))) ;; zenburn-yellow-1
+ '(org-table ((t (:foreground "#9fc59f")))) ;; zenburn-green+2
+ '(org-tag ((t (:bold t :weight bold)))) ;; n/a
+ '(org-time-grid ((t (:foreground "#ffc9a4")))) ;; zenburn-orange slight lighter
+ '(org-todo ((t (:bold t :foreground "#cc9393" :weight bold)))) ;; zenburn-red
+ '(org-upcoming-deadline ((t (:inherit font-lock-keyword-face)))) ;; zenburn-fg
+ '(org-warning ((t (:bold t :foreground "#cc9393" :weight bold))));; zenburn-red
+
+ ;; TODO
+ '(outline-8 ((t (:inherit default))))
+ '(outline-7 ((t (:inherit outline-8 :height 1.0))))
+ '(outline-6 ((t (:inherit outline-7 :height 1.0))))
+ '(outline-5 ((t (:inherit outline-6 :height 1.0))))
+ '(outline-4 ((t (:inherit outline-5 :height 1.0))))
+ '(outline-3 ((t (:inherit outline-4 :height 1.0))))
+ '(outline-2 ((t (:inherit outline-3 :height 1.0))))
+ '(outline-1 ((t (:inherit outline-2 :height 1.0))))
+
+ '(setnu-line-number ((t (:inherit zenburn-lowlight-2))))
+
+ '(speedbar-button ((t (:inherit zenburn-primary-1))))
+ '(speedbar-file ((t (:inherit zenburn-primary-2))))
+ '(speedbar-directory ((t (:inherit zenburn-primary-5))))
+ '(speedbar-tag ((t (:inherit font-lock-function-name))))
+ '(speedbar-highlight ((t (:underline t))))
+
+ '(strokes-char ((t (:inherit font-lock-keyword))))
+
+ '(todoo-item-header
+ ((t (:inherit zenburn-primary-1))))
+ '(todoo-item-assigned-header
+ ((t (:inherit zenburn-primary-2))))
+ `(todoo-sub-item-header
+ ((t (:foreground ,zenburn-yellow))))
+
+ '(tuareg-font-lock-governing
+ ((t (:inherit zenburn-primary-2))))
+ '(tuareg-font-lock-interactive-error
+ ((t (:inherit font-lock-warning))))
+ '(tuareg-font-lock-interactive-output
+ ((t (:inherit zenburn-primary-3))))
+ '(tuareg-font-lock-operator
+ ((t (:inherit font-lock-operator))))
+
+ '(w3m-form-button
+ ((t (:inherit widget-button))))
+ '(w3m-form-button-pressed
+ ((t (:inherit widget-button-pressed))))
+ '(w3m-form-button-mouse
+ ((t (:inherit widget-button-pressed))))
+ '(w3m-tab-unselected
+ ((t (:box (:line-width 1 :style released-button)))))
+ '(w3m-tab-selected
+ ((t (:box (:line-width 1 :style pressed-button)))))
+ '(w3m-tab-unselected-retrieving
+ ((t (:inherit (w3m-tab-unselected widget-inactive)))))
+ '(w3m-tab-selected-retrieving
+ ((t (:inherit (w3m-tab-selected widget-inactive)))))
+ '(w3m-tab-background
+ ((t (:inherit zenburn-highlight-subtle))))
+ '(w3m-anchor
+ ((t (:inherit zenburn-primary-1))))
+ '(w3m-arrived-anchor
+ ((t (:inherit zenburn-primary-2))))
+ '(w3m-image
+ ((t (:inherit zenburn-primary-4))))
+ '(w3m-form
+ ((t (:inherit widget-field)))))
+
+ (zenburn-make-face-alias-clauses
+ '(Buffer-menu-buffer-face
+ apt-utils-broken-face
+ apt-utils-description-face
+ apt-utils-field-contents-face
+ apt-utils-field-keyword-face
+ apt-utils-normal-package-face
+ apt-utils-summary-face
+ apt-utils-version-face
+ apt-utils-virtual-package-face
+ breakpoint-disabled-bitmap-face
+ breakpoint-enabled-bitmap-face
+ calendar-today-face
+ change-log-date-face
+ compilation-info-face
+ compilation-warning-face
+ cua-rectangle-face
+ custom-button-face
+ custom-button-pressed-face
+ custom-changed-face
+ custom-comment-face
+ custom-comment-tag-face
+ custom-documentation-face
+ custom-face-tag-face
+ custom-group-tag-face
+ custom-group-tag-face-1
+ custom-invalid-face
+ custom-modified-face
+ custom-rogue-face
+ custom-saved-face
+ custom-set-face
+ custom-state-face
+ custom-variable-button-face
+ custom-variable-tag-face
+ diary-face
+ dictionary-button-face
+ dictionary-reference-face
+ dictionary-word-entry-face
+ diff-added-face
+ diff-context-face
+ diff-file-header-face
+ diff-header-face
+ diff-hunk-header-face
+ diff-index-face
+ diff-removed-face
+ emms-pbi-current-face
+ emms-pbi-mark-marked-face
+ emms-pbi-song-face
+ erc-action-face
+ erc-bold-face
+ erc-current-nick-face
+ erc-dangerous-host-face
+ erc-default-face
+ erc-direct-msg-face
+ erc-error-face
+ erc-fool-face
+ erc-highlight-face
+ erc-input-face
+ erc-keyword-face
+ erc-nick-default-face
+ erc-nick-msg-face
+ erc-notice-face
+ erc-pal-face
+ erc-prompt-face
+ erc-timestamp-face
+ erc-underline-face
+ eshell-ls-archive-face
+ eshell-ls-backup-face
+ eshell-ls-clutter-face
+ eshell-ls-directory-face
+ eshell-ls-executable-face
+ eshell-ls-missing-face
+ eshell-ls-product-face
+ eshell-ls-special-face
+ eshell-ls-symlink-face
+ eshell-ls-unreadable-face
+ eshell-prompt-face
+ fancy-widget-button-face
+ fancy-widget-button-highlight-face
+ fancy-widget-button-pressed-face
+ fancy-widget-button-pressed-highlight-face
+ fancy-widget-documentation-face
+ fancy-widget-field-face
+ fancy-widget-inactive-face
+ fancy-widget-single-line-field-face
+ font-latex-bold-face
+ font-latex-sedate-face
+ font-latex-title-4-face
+ font-latex-warning-face
+ font-lock-builtin-face
+ font-lock-comment-delimiter-face
+ font-lock-comment-face
+ font-lock-constant-face
+ font-lock-doc-face
+ font-lock-function-name-face
+ font-lock-keyword-face
+ font-lock-negation-char-face
+ font-lock-operator-face
+ font-lock-preprocessor-face
+ font-lock-pseudo-keyword-face
+ font-lock-string-face
+ font-lock-type-face
+ font-lock-variable-name-face
+ font-lock-warning-face
+ gnus-cite-face-1
+ gnus-cite-face-10
+ gnus-cite-face-11
+ gnus-cite-face-2
+ gnus-cite-face-3
+ gnus-cite-face-4
+ gnus-cite-face-5
+ gnus-cite-face-6
+ gnus-cite-face-7
+ gnus-cite-face-8
+ gnus-cite-face-9
+ gnus-group-mail-1-empty-face
+ gnus-group-mail-2-empty-face
+ gnus-group-mail-3-empty-face
+ gnus-group-mail-3-face
+ gnus-group-news-1-empty-face
+ gnus-group-news-2-empty-face
+ gnus-group-news-3-empty-face
+ gnus-header-content-face
+ gnus-header-from-face
+ gnus-header-name-face
+ gnus-header-newsgroups-face
+ gnus-header-subject-face
+ gnus-signature-face
+ gnus-summary-cancelled-face
+ gnus-summary-high-ancient-face
+ gnus-summary-high-read-face
+ gnus-summary-high-ticked-face
+ gnus-summary-high-unread-face
+ gnus-summary-low-ancient-face
+ gnus-summary-low-read-face
+ gnus-summary-low-ticked-face
+ gnus-summary-low-unread-face
+ gnus-summary-normal-ancient-face
+ gnus-summary-normal-read-face
+ gnus-summary-normal-ticked-face
+ gnus-summary-normal-unread-face
+ gnus-summary-selected-face
+ highlight-current-line-face
+ holiday-face
+ ibuffer-deletion-face
+ ibuffer-help-buffer-face
+ ibuffer-marked-face
+ ibuffer-special-buffer-face
+ ido-first-match-face
+ ido-only-match-face
+ ido-subdir-face
+ imaxima-latex-error-face
+ isearch-lazy-highlight-face
+ jde-java-font-lock-constant-face
+ jde-java-font-lock-doc-tag-face
+ jde-java-font-lock-link-face
+ jde-java-font-lock-modifier-face
+ jde-java-font-lock-number-face
+ jde-java-font-lock-operator-face
+ jde-java-font-lock-package-face
+ keywiz-command-face
+ keywiz-right-face
+ keywiz-wrong-face
+ makefile-shell-face
+ makefile-space-face
+ message-cited-text-face
+ message-header-cc-face
+ message-header-from-face
+ message-header-name-face
+ message-header-newsgroups-face
+ message-header-other-face
+ message-header-subject-face
+ message-header-to-face
+ message-header-xheader-face
+ message-mml-face
+ message-separator-face
+ mtorus-highlight-face
+ mtorus-notify-highlight-face
+ nxml-attribute-colon-face
+ nxml-attribute-local-name-face
+ nxml-attribute-prefix-face
+ nxml-attribute-value-delimiter-face
+ nxml-attribute-value-face
+ nxml-cdata-section-CDATA-face
+ nxml-cdata-section-content-face
+ nxml-cdata-section-delimiter-face
+ nxml-char-ref-delimiter-face
+ nxml-char-ref-number-face
+ nxml-comment-content-face
+ nxml-comment-delimiter-face
+ nxml-delimited-data-face
+ nxml-delimiter-face
+ nxml-element-colon-face
+ nxml-element-local-name-face
+ nxml-element-prefix-face
+ nxml-entity-ref-delimiter-face
+ nxml-entity-ref-name-face
+ nxml-name-face
+ nxml-namespace-attribute-colon-face
+ nxml-namespace-attribute-prefix-face
+ nxml-namespace-attribute-xmlns-face
+ nxml-processing-instruction-content-face
+ nxml-processing-instruction-delimiter-face
+ nxml-processing-instruction-target-face
+ nxml-ref-face
+ nxml-tag-delimiter-face
+ nxml-tag-slash-face
+ nxml-text-face
+ org-agenda-date-today-face
+ org-agenda-structure-face
+ org-archived-face
+ org-column-face
+ ;org-checkbox-face
+ org-date-face
+ org-deadline-announce-face
+ org-done-face
+ org-formula-face
+ org-headline-done-face
+ org-hide-face
+ org-level-1-face
+ org-level-2-face
+ org-level-3-face
+ org-level-4-face
+ org-level-5-face
+ org-level-6-face
+ org-level-7-face
+ org-level-8-face
+ org-link-face
+ ;org-priority-face
+ org-scheduled-face
+ org-scheduled-previously-face
+ org-scheduled-today-face
+ org-special-keyword-face
+ org-table-face
+ org-tag-face
+ org-time-grid-face
+ org-todo-face
+ org-upcoming-deadline-face
+ org-warning-face
+ paren-face
+ plain-widget-button-face
+ plain-widget-button-pressed-face
+ plain-widget-documentation-face
+ plain-widget-field-face
+ plain-widget-inactive-face
+ plain-widget-single-line-field-face
+ setnu-line-number-face
+ show-paren-match-face
+ show-paren-mismatch-face
+ speedbar-button-face
+ speedbar-directory-face
+ speedbar-file-face
+ speedbar-highlight-face
+ speedbar-tag-face
+ strokes-char-face
+ todoo-item-assigned-header-face
+ todoo-item-header-face
+ todoo-sub-item-header-face
+ tuareg-font-lock-governing-face
+ tuareg-font-lock-interactive-error-face
+ tuareg-font-lock-interactive-output-face
+ tuareg-font-lock-operator-face
+ w3m-anchor-face
+ w3m-arrived-anchor-face
+ w3m-form-button-face
+ w3m-form-button-mouse-face
+ w3m-form-button-pressed-face
+ w3m-form-face
+ w3m-image-face
+ w3m-tab-background-face
+ w3m-tab-selected-face
+ w3m-tab-selected-retrieving-face
+ w3m-tab-unselected-face
+ w3m-tab-unselected-retrieving-face
+ widget-button-face
+ widget-button-highlight-face
+ widget-button-pressed-face
+ widget-button-pressed-highlight-face
+ widget-documentation-face
+ widget-field-face
+ widget-inactive-face
+ widget-single-line-field-face))
+ )))
+
+(defalias 'zenburn #'color-theme-zenburn)
+
+(provide 'zenburn)
+
+;; Local Variables:
+;; time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+;; time-stamp-start: "Updated: "
+;; time-stamp-end: "$"
+;; End:
+
+;;; zenburn.el ends here.
diff --git a/install.bat b/install.bat
index e3c524e..86b7f66 100644
--- a/install.bat
+++ b/install.bat
@@ -4,4 +4,4 @@ REM An install script for windows
echo "Copying .emacs to %APPDATA%\\"
copy /Y .emacs %APPDATA%\
echo "Copying .emacs.d to %APPDATA%\\"
-copy /Y .emacs.d %APPDATA%\ \ No newline at end of file
+copy /Y .emacs.d %APPDATA%\.emacs.d\
diff --git a/install.sh b/install.sh
index 8494c63..153a98e 100755
--- a/install.sh
+++ b/install.sh
@@ -1,20 +1,23 @@
+#!/bin/bash
INSTALL_BASEFILE=`readlink -f $0`
INSTALL_BASEDIR=`dirname $INSTALL_BASEFILE`
CMD="ln -sfn"
-# XDEFAULTS
-echo "Linking $INSTALL_BASEDIR/.Xdefaults to $HOME/.Xdefaults"
-$CMD $INSTALL_BASEDIR/Xdefaults $HOME/.Xdefaults
+function linkmy
+{
+ echo "Linking $INSTALL_BASEDIR/$1 to $HOME/$2"
+ $CMD $INSTALL_BASEDIR/$1 $HOME/$2
+}
+# XDEFAULTS
+linkmy Xdefaults .Xdefaults
# XMODMAP
-echo "Linking $INSTALL_BASEDIR/.Xmodmap to $HOME/.Xmodmap"
-$CMD $INSTALL_BASEDIR/Xmodmap $HOME/.Xmodmap
-
+linkmy Xmodmap .Xmodmap
# NCMPCPP
-echo "Linking $INSTALL_BASEDIR/ncmpcpp to $HOME/.ncmpcpp"
-$CMD $INSTALL_BASEDIR/ncmpcpp $HOME/.ncmpcpp
-
+linkmy ncmpcpp .ncmpcpp
# AWESOME
-echo "Linking $INSTALL_BASEDIR/config/awesome to $HOME/.config/awesome"
-$CMD $INSTALL_BASEDIR/config/awesome $HOME/.config/awesome
+linkmy config/awesome .config/awesome
+# EMACS
+linkmy emacs .emacs
+linkmy emacs.d .emacs.d