• R/O
  • SSH

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

File Info

Rev. 68fee9ce6b1fb3f651614e02cd4b59bde819ee06
Größe 214,669 Bytes
Zeit 2024-06-11 01:12:02
Autor Lorenzo Isella
Log Message

I added the quarto mode package and I now load the library.

Content



;;; .emacs --- my Emacs Init File


;;
;;    ___ _ __ ___   __ _  ___ ___
;;   / _ \ '_ ` _ \ / _` |/ __/ __|
;;  |  __/ | | | | | (_| | (__\__ \
;; (_)___|_| |_| |_|\__,_|\___|___/
;;






;; no bells please
(setq ring-bell-function (lambda nil nil))

;; ;;I try using sylpheed to send emails

;;     (autoload 'sylpheed-mode
;;       "sylpheed-mode.el"
;;       "Major mode for writing email with Sylpheed!" t)



;;-----------------------------------------------------------------
;; try-require: attempt to load a feature/library, failing silently
;;-----------------------------------------------------------------
(defvar missing-packages-list nil
  "List of packages that `try-require' can't find.")

(defun try-require (feature)
  "Attempt to load a library or module. Return true if the
library given as argument is successfully loaded. If not, instead
of an error, just add the package to a list of missing packages."
  (condition-case err
      ;; protected form
      (progn
        (message "Checking for library `%s'..." feature)
        (if (stringp feature)
            (load-library feature)
          (require feature))
        (message "Checking for library `%s'... Found" feature))
    ;; error handler
    (file-error  ; condition
     (progn
       (message "Checking for library `%s'... Missing" feature)
       (add-to-list 'missing-packages-list feature))
     nil)))
;;-----------------------------------------------------------------



;; (setq package-enable-at-startup nil) (package-initialize)




;;----------------
;; AUTO-SAVE
;;----------------
(setq
 auto-save-interval 300 ;auto-save every 5 minutes
 auto-save-timeout nil
; version-control 'never
)

;; Save positions in files between sessions
(when (try-require 'saveplace)
  (setq-default save-place t)
  ;; For server
  (add-hook 'server-visit-hook 'save-place-find-file-hook t)
)





;; set a very long time before zone kicks in

(require 'zone)
;; (setq zone-idle (* 60 180)) ;; 3 hours
;; (zone-when-idle zone-idle)
(zone-leave-me-alone)


   
      ;**********************************************************
   
;*
   
;* Reload the .emacs file with a minimum of effort,
   
;* First saving histories with Persistent
   
;*
   
;**********************************************************


; see http://bit.ly/16IA11e

;; easy keys to split window. Key based on ErgoEmacs keybinding
(global-set-key (kbd "M-1") 'delete-other-windows) ; expand current pane
(global-set-key (kbd "M-2") 'split-window-vertically) ; split pane top/bottom
(global-set-key (kbd "M-4") 'delete-window) ; close current pane
(global-set-key (kbd "M-3") 'other-window) ; cursor to other pane


   
(defun reload () (interactive)
   
"Reload .emacs"
   
(persistent-session-save-alist-to-file)
  
(if (file-exists-p "~/.emacs")
  
(load-file "~/.emacs")))










;;; speedbar
;; (add-hook 'speedbar-load-hook
;; 	  #'(lambda ()
;; 	      ;; display minibuffer on speedbar frame
;; 	      (defadvice speedbar-get-focus
;; 		(before change-default-minibuffer-frame activate)
;; 		"Change `default-minibuffer-frame' to now selected frame."
;; 		(interactive)
;; 		(setq default-minibuffer-frame (selected-frame)))
;; 	      (or (eq (get 'speedbar-mode 'mode-class) 'special)
;; 		  (put 'speedbar-mode 'mode-class 'special))))




;;  (require 'sr-speedbar)
;; (global-set-key (kbd "C-c b") 'sr-speedbar-toggle)

;; (add-hook 'speedbar-mode-hook '(lambda() (toggle-truncate-lines nil)))



;; Saves the last 20 versions of each file I am editing in instead of the current 
;; directory

(setq version-control t)
(setq kept-old-versions 0)
(setq kept-new-versions 20)
(setq delete-old-versions t)
(setq backup-directory-alist
      '((".*" . "~/.emacs.d/backup-files/")))


;; macro to split windows and automatically take you to the new window.

(global-set-key (kbd "C-c 2") (kbd "C-x 2 C-x 4 b"))


;; macro to save register location

(global-set-key (kbd "C-c s") (kbd "C-x r SPC r"))


;; macro to jump to register location

(global-set-key (kbd "C-c j") (kbd "C-x r j r"))


;; Some functions to deal with line wrap in multiple buffers (e.g. C-x 3)

;; See http://www.delorie.com/gnu/docs/elisp-manual-21/elisp_620.html
;; and http://www.gnu.org/software/emacs/manual/elisp.pdf

;; enable line wrap by default
(setq default-truncate-lines nil)

;; make side by side buffers function the same as the main window
;;(setq truncate-partial-width-windows nil)

;; Add F12 to toggle line wrap
(global-set-key [f12] 'toggle-truncate-lines)



;; make commenting easy ;)
(global-set-key (kbd "M-#") 'comment-region)
(global-set-key (kbd "C-#") 'comment-region)
;; toggle line numer display
(global-set-key (kbd "C-c n") 'global-linum-mode)


;; repeat simple and complex commands
(global-set-key (kbd "C-.") 'repeat)


;; select all
(global-set-key (kbd "C-x C-a") 'mark-whole-buffer)



;;function for easy formatting


(global-set-key [f9] 'shrink-whitespaces)

(defun shrink-whitespaces ()
 "Collapse all white spaces around point, depending on context.
White space here includes space, tabs, and any end of line char.
This commands either calls just-one-space or delete-blank-lines."
 (interactive)
 (let (p1 p2 mytext)
   (save-excursion
     (skip-chars-backward "\t \n")
     (setq p1 (point))
     (skip-chars-forward "\t \n")
     (setq p2 (point))
     (setq mytext (buffer-substring-no-properties p1 p2))
     )
   (if (string-match "[\t ]*\n[\t ]*\n" mytext)
       (progn (delete-blank-lines))
     (progn (just-one-space))
     )
   )
 )


;; ^E in Vi
(defun ctrl-e-in-vi (n)
 (interactive "p")
(unless (eq (window-start) (point-min))  ; to avoid the beep of the beginning of the buffer 
 (scroll-down n)))

;; ^Y in Vi
(defun ctrl-y-in-vi (n)
 (interactive "p")
(unless (eq (window-end) (point-max))  ; to avoid weird behaviour at the end of the buffer 
 (scroll-up n)))

(global-set-key [f1] 'ctrl-y-in-vi)
(global-set-key [f2] 'ctrl-e-in-vi) 





;; (add-hook 'isearch-mode-hook
;;  (lambda ()
;;  (define-key isearch-mode-map (kbd "M-s") 'isearch-repeat-forward)
;;  (define-key isearch-mode-map (kbd "M-S") 'isearch-repeat-backward)
;;  )
;; )









;; to scroll the screen without moving the cursor


;; (global-set-key [down] (lambda ()
;;                         (interactive)
;;                         (next-line 1)
;;                         (unless (eq (window-end) (point-max))
;;                           (scroll-up 1))))
;; (global-set-key [up] (lambda ()
;;                       (interactive)
;;                       (previous-line 1)
;;                       (unless (eq (window-start) (point-min))
;;                         (scroll-down 1))))



;;cc mode for c/c++ files


(require 'cc-mode)

;; Choose a different tool for your buffer navigation

(defalias 'list-buffers 'ibuffer)

(global-set-key (kbd "C-c i") 'ibuffer)

;;(setq ibuffer-tree-truncate-lines nil)

;(setq ibuffer-eliding-string nil)

(setq ibuffer-truncate-lines nil)





(setq ibuffer-formats '((mark modified read-only " " (name 16 16) " "
                        (size 6 -1 :right) " " (mode 16 16 :center)
                         " " (process 8 -1) " " filename)
                    	   (mark " " (name 16 -1) " " filename))
      ibuffer-elide-long-columns t
      ibuffer-eliding-string "&")



;;  Allow system copy in emacs
(setq x-select-enable-clipboard t)


;; IDO for autocompleting

  
(require 'ido)

(setq ido-confirm-unique-completion t)
;(setq ido-default-buffer-method 'samewindow)
(setq ido-use-filename-at-point t)
(ido-mode t)
(ido-everywhere t)

(set-face-background 'ido-first-match "red")
(set-face-foreground 'ido-subdir "blue3")

(icomplete-mode 1)

;; IDO extras

  (defun my-icompleting-read(prompt choices)
      (let ((ido-make-buffer-list-hook
	     (lambda ()
	       (setq ido-temp-list choices))))
        (ido-read-buffer prompt)))




;(ido-buffer-internal ido-default-buffer-method nil nil nil "#")


 (setq ido-execute-command-cache nil)

 (defun ido-execute-command ()
   (interactive)
   (call-interactively
    (intern
     (ido-completing-read
      "M-x "
      (progn
        (unless ido-execute-command-cache
          (mapatoms (lambda (s)
                      (when (commandp s)
                        (setq ido-execute-command-cache
                              (cons (format "%S" s) ido-execute-command-cache))))))
        ido-execute-command-cache)))))
    
 (add-hook 'ido-setup-hook
           (lambda ()
             (setq ido-enable-flex-matching t)
             (global-set-key "\M-x" 'ido-execute-command)))





;; Rectangle regions
(global-set-key (kbd "C-x r C-SPC") 'rm-set-mark)
(global-set-key (kbd "C-x r C-x") 'rm-exchange-point-and-mark)
(global-set-key (kbd "C-x r C-w") 'rm-kill-region)
(global-set-key (kbd "C-x r M-w") 'rm-kill-ring-save)
(autoload 'rm-set-mark "rect-mark"
  "Set mark for rectangle." t)
(autoload 'rm-exchange-point-and-mark "rect-mark"
  "Exchange point and mark for rectangle." t)
(autoload 'rm-kill-region "rect-mark"
  "Kill a rectangular region and save it in the kill ring." t)
(autoload 'rm-kill-ring-save "rect-mark"
  "Copy a rectangular region to the kill ring." t)



;; Some eshell stuff



(defun m-eshell-hook ()

; define control p, control n and the up/down arrow

  (define-key eshell-mode-map [(control p)] 'eshell-previous-matching-input-from-input)
  (define-key eshell-mode-map [(control n)] 'eshell-next-matching-input-from-input)

  (define-key eshell-mode-map [up] 'previous-line)
  (define-key eshell-mode-map [down] 'next-line)
)

(add-hook 'eshell-mode-hook 'm-eshell-hook)


(add-hook 'eshell-mode-hook #'rainbow-delimiters-mode)





(add-hook 'eshell-output-filter-functions
	  'eshell-postoutput-scroll-to-bottom) ;prevents annoying scrolling
; Put a space above eshell prompt
(setq eshell-prompt-function (lambda nil (concat "\n" (eshell/pwd) " $ ")))
; Make ls output RET and mouse-2 clickable
;(load-library "esh-clickable-ls.el")
; Type op file or op directory or op . in Eshell to open them in explorer, cool
;; (defun eshell/op (file)
;;   (w32-shell-execute "Open" (substitute ?\\ ?/ (expand-file-name file))) nil)




;; eshell autocompletion for choosing directories






;; (defun eshell-get-dir-from-dir-ring (dir-name)
;;   "Interactively select directory from eshell-last-dir-ring"
;;   (interactive (list (flet ((iswitchb-make-buflist
;;                              (default)
;;                              (setq iswitchb-buflist (ring-elements eshell-last-dir-ring))))
;;                        (iswitchb-read-buffer "Change to directory: "))))
;;   dir-name)


(defun eshell-electric-insert-dir ()
  "Handy when copying and moving files to, or changing to a certain
directory. On the prompt, type a space, a colon (`:') and call this function,
preferably bound to the TAB key."
  (interactive)
  (if (save-excursion
        (goto-char (- (point) 2))
        (if (looking-at " :")
            t
          nil))
      (let ((dir (call-interactively 'eshell-get-dir-from-dir-ring)))
        (delete-char -1)
        (insert (pcomplete-quote-argument dir)))
    (pcomplete)))



(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.
 '(TeX-PDF-mode t)
 '(TeX-output-view-style
   '(("^dvi$"
      ("^landscape$" "^pstricks$\\|^pst-\\|^psfrag$")
      "%(o?)dvips -t landscape %d -o && gv %f")
     ("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$" "%(o?)dvips %d -o && gv %f")
     ("^dvi$"
      ("^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "^landscape$")
      "%(o?)xdvi %dS -paper a4r -s 0 %d")
     ("^dvi$" "^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "%(o?)xdvi %dS -paper a4 %d")
     ("^dvi$"
      ("^a5\\(?:comb\\|paper\\)$" "^landscape$")
      "%(o?)xdvi %dS -paper a5r -s 0 %d")
     ("^dvi$" "^a5\\(?:comb\\|paper\\)$" "%(o?)xdvi %dS -paper a5 %d")
     ("^dvi$" "^b5paper$" "%(o?)xdvi %dS -paper b5 %d")
     ("^dvi$" "^letterpaper$" "%(o?)xdvi %dS -paper us %d")
     ("^dvi$" "^legalpaper$" "%(o?)xdvi %dS -paper legal %d")
     ("^dvi$" "^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d")
     ("^dvi$" "." "%(o?)xdvi %dS %d")
     ("^pdf$" "." "evince %o")
     ("^html?$" "." "netscape %o")))
 '(TeX-view-program-selection
   '(((output-dvi style-pstricks)
      "dvips and gv")
     (output-dvi "xdvi")
     (output-pdf "Evince")
     (output-html "xdg-open")))
 '(blink-cursor-mode nil)
 '(column-number-mode t)
 '(comint-completion-addsuffix t)
 '(comint-completion-autolist t)
 '(comint-input-ignoredups t)
 '(comint-move-point-for-output t)
 '(comint-scroll-show-maximum-output t)
 '(comint-scroll-to-bottom-on-input t)
 '(custom-safe-themes
   '("ab04c00a7e48ad784b52f34aa6bfa1e80d0c3fcacc50e1189af3651013eb0d58" "04dd0236a367865e591927a3810f178e8d33c372ad5bfef48b5ce90d4b476481" "a0feb1322de9e26a4d209d1cfa236deaf64662bb604fa513cca6a057ddf0ef64" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" "7cffb57df77c86686ca7f0486af3feb60d6502dd990fa4085245454bd2a77b04" "d677ef584c6dfc0697901a44b885cc18e206f05114c8a3b7fde674fce6180879" "8757381d23f0933ba03b350ed7fc225f2b2cef0e7bbaaa642105e3e346c1bf80" default))
 '(display-time-24hr-format t)
 '(display-time-mode t)
 '(ecb-directories-menu-user-extension-function 'ignore)
 '(ecb-display-image-icons-for-semantic-tags t)
 '(ecb-fix-window-size 'width)
 '(ecb-highlight-tag-with-point 'highlight-scroll)
 '(ecb-history-item-name 'buffer-name)
 '(ecb-history-menu-user-extension-function 'ignore)
 '(ecb-kill-buffer-clears-history 'auto)
 '(ecb-layout-name "left9")
 '(ecb-method-non-semantic-face 'ecb-default-general-face)
 '(ecb-methods-menu-user-extension-function 'ignore)
 '(ecb-minor-mode-text "")
 '(ecb-non-semantic-exclude-modes '(sh-mode fundamental-mode text-mode LaTeX-mode))
 '(ecb-options-version "2.40")
 '(ecb-primary-secondary-mouse-buttons 'mouse-1--C-mouse-1)
 '(ecb-process-non-semantic-files t)
 '(ecb-show-tags
   '((default
       (include expanded name)
       (parent expanded name)
       (type expanded name)
       (variable expanded name)
       (function expanded name)
       (label expanded name)
       (t expanded name))
     (c++-mode
      (include collapsed nil)
      (parent collapsed nil)
      (type flattened nil)
      (variable collapsed access)
      (function flattened access)
      (function collapsed access)
      (label hidden nil)
      (t collapsed nil))
     (c-mode
      (include collapsed nil)
      (parent collapsed nil)
      (type flattened nil)
      (variable collapsed access)
      (function flattened access)
      (function collapsed access)
      (label hidden nil)
      (t collapsed nil))
     (bovine-grammar-mode
      (keyword collapsed name)
      (token collapsed name)
      (nonterminal flattened name)
      (rule flattened name)
      (t collapsed nil))
     (wisent-grammar-mode
      (keyword collapsed name)
      (token collapsed name)
      (nonterminal flattened name)
      (rule flattened name)
      (t collapsed nil))
     (texinfo-mode
      (section flattened nil)
      (def collapsed name)
      (t collapsed nil))
     (lua-mode
      (t expanded name)
      (function collapsed name))))
 '(ecb-sources-sort-method 'extension)
 '(ecb-tree-expand-symbol-before t)
 '(ecb-truncate-long-names nil)
 '(ecb-use-speedbar-instead-native-tree-buffer nil)
 '(ecb-version-check t)
 '(ecb-windows-width 0.25)
 '(eshell-completion-addsuffix t)
 '(eshell-completion-autolist t)
 '(eshell-input-ignoredups t)
 '(eshell-scroll-show-maximum-output t)
 '(eshell-scroll-to-bottom-on-input t)
 '(eshell-scroll-to-bottom-on-output t)
 '(ibuffer-truncate-lines nil t)
 '(package-selected-packages
   '(quarto-mode fira-code-mode poly-R polymode zenburn-theme darktooth-theme monokai-alt-theme solarized-theme gruvbox-theme monokai-pro-theme alect-themes afternoon-theme rainbow-delimiters smartparens evil-smartparens tabbar session pod-mode muttrc-mode mutt-alias markdown-mode initsplit htmlize graphviz-dot-mode folding ess eproject diminish csv-mode browse-kill-ring boxquote bm bar-cursor apache-mode))
 '(quote (ecb-sources-menu-user-extension-function 'ignore))
 '(safe-local-variable-values
   '((eval when
	   (require 'rainbow-mode nil t)
	   (rainbow-mode 1))))
 '(screen-lines-mode t nil (screen-lines))
 '(show-paren-mode t)
 '(speedbar-frame-parameters
   '((minibuffer)
     (width . 20)
     (border-width . 0)
     (menu-bar-lines . 0)
     (tool-bar-lines . 0)
     (unsplittable . t)))
 '(w3m-default-display-inline-images t)
 '(w3m-display-inline-image t)
 '(w3m-home-page "about:")
 '(w3m-key-binding 'info)
 '(w3m-view-this-url-new-session-in-background t)
 '(warning-suppress-types '((comp))))



(require 'shell-command)
(shell-command-completion-mode)



;; ;;Now I add another customization for the shell-mode

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

(add-hook 'shell-mode-hook #'rainbow-delimiters-mode)



;;  (comint-send-string (current-buffer) "alias ls='ls --color'")
; then do a
;;    (comint-send-input)




;;; Shell mode
;; (setq ansi-color-names-vector ; better contrast colors
;;       ["black" "red4" "green4" "yellow4"
;;        "blue3" "magenta4" "cyan4" "white"])
;; (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

;; (add-hook 'shell-mode-hook '(lambda () (toggle-truncate-lines 1)))
;; (setq comint-prompt-read-only t)





;; ; interpret and use ansi color codes in shell output windows
;; (ansi-color-for-comint-mode-on)



;; Maybe it is NOT a good idea that such a buffer disappear quickly (it tends to take away any other second
;; buffer with it)

;; make completion buffers disappear after 3 seconds.
;; (add-hook 'completion-setup-hook
;;   (lambda () (run-at-time 3 nil
    ;; (lambda () (delete-windows-on "*Completions*")))))
    




;; (add-hook 'shell-mode-hook '(lambda () (toggle-truncate-lines 1)))
(setq comint-prompt-read-only t)





;; improve visualization in ecb

(setq truncate-partial-width-windows nil) 
(setq ecb-truncate-lines nil)
(setq ecb-tree-truncate-lines nil)
;;(setq ecb-deactivate 'tip-of-the-day)
;; ecb cache directories


(setq ecb-show-sources-in-directories-buffer  nil)


(setq ecb-cache-directory-contents  '((".*" . 500)) )

(setq ecb-cache-directory-contents-not  nil )

;; kill tip of the day

(setq ecb-tip-of-the-day nil)

;; choose ecb layout

;;(ecb-change-layout 'left9)


;;hide interactor

(global-set-key (kbd "C-c C-z") 'ecb-toggle-ecb-windows)


;; macro for going to interactor

(fset 'go-to-interactor
   "\C-c.gm")

(global-set-key (kbd "C-c e") 'go-to-interactor)

(fset 'go-to-buffer
   "\C-c.gl")

(global-set-key (kbd "C-c w") 'go-to-buffer)



;; activate ecb ;;; it does not work!
;; (setq ecb-auto-activate t)



;; run a few shells.
;; (shell "*shell5*")
;; (shell "*shell6*")
;; (shell "*shell7*")

; C-5, 6, 7 to switch to shells
;; (global-set-key [(control 5)]
;;   (lambda () (interactive) (switch-to-buffer "*shell5*")))
;; (global-set-key [(control 6)]
;;   (lambda () (interactive) (switch-to-buffer "*shell6*")))
;; (global-set-key [(control 7)]
;;   (lambda () (interactive) (switch-to-buffer "*shell7*")))





;; (custom-set-faces
;; ;; custom-set-faces was added by Custom — don’t edit or cut/paste it!
;; ;; Your init file should contain only one such instance.
;; ‘(comint-highlight-prompt ((t (:foreground “white”)))))



(show-paren-mode t) ;highlight matching parentheses


;; a function to search the selected text

;; (defun my-search-forward (begin end)
;;   (interactive (list (point) (mark)))
;;   (let ((text (filter-buffer-substring begin end nil t)))
;;     (goto-char (max begin end))
;;     (let ((found-pos (search-forward text nil t)))
;; ;    (let ((found-pos (search text nil t)))
;;       (if (not found-pos)
;;           (progn
;;             (goto-char begin)
;;             (error "not found"))
;;           (progn
;;             (goto-char found-pos)
;;             (set-mark (- found-pos (length text))))))))

;; ;; (define-key global-map [(shift down-mouse-1)] nil)
;; ;; (define-key global-map [(shift mouse-1)] 'mouse-search-forward)


;; ;(define-key global-map [(C-q )] nil)
;; (define-key global-map [(control q )] 'my-search-forward)



  (require 'etags) ;; provides `find-tag-default' in Emacs 21.
  
  (defun isearch-yank-regexp (regexp)
    "Pull REGEXP into search regexp." 
    (let ((isearch-regexp nil)) ;; Dynamic binding of global.
      (isearch-yank-string regexp))
    (isearch-search-and-update))
  
  (defun isearch-yank-symbol (&optional partialp)
    "Put symbol at current point into search string.
  
  If PARTIALP is non-nil, find all partial matches."
    (interactive "P")
    (let* ((sym (find-tag-default))
	   ;; Use call of `re-search-forward' by `find-tag-default' to
	   ;; retrieve the end point of the symbol.
	   (sym-end (match-end 0))
	   (sym-start (- sym-end (length sym))))
      (if (null sym)
	  (message "No symbol at point")
	(goto-char sym-start)
	;; For consistent behavior, restart Isearch from starting point
	;; (or end point if using `isearch-backward') of symbol.
	(isearch-search)
	(if partialp
	    (isearch-yank-string sym)
	  (isearch-yank-regexp
	   (concat "\\_<" (regexp-quote sym) "\\_>"))))))
  
  (defun isearch-current-symbol (&optional partialp)
    "Incremental search forward with symbol under point.
  
  Prefixed with \\[universal-argument] will find all partial
  matches."
    (interactive "P")
    (let ((start (point)))
      (isearch-forward-regexp nil 1)
      (isearch-yank-symbol partialp)))
  
  (defun isearch-backward-current-symbol (&optional partialp)
    "Incremental search backward with symbol under point.
  
  Prefixed with \\[universal-argument] will find all partial
  matches."
    (interactive "P")
    (let ((start (point)))
      (isearch-backward-regexp nil 1)
      (isearch-yank-symbol partialp)))
  
  (global-set-key [f3] 'isearch-current-symbol)
  (global-set-key [(control f3)] 'isearch-backward-current-symbol)
  
  ;; Subsequent hitting of the keys will increment to the next
  ;; match--duplicating `C-s' and `C-r', respectively.
  (define-key isearch-mode-map [f3] 'isearch-repeat-forward)
  (define-key isearch-mode-map [(control f3)] 'isearch-repeat-backward)



;; Functions to kill the buffers


;; Kills live buffers, leaves some emacs work buffers
;; optained from http://www.chrislott.org/geek/emacs/dotemacs.html
(defun nuke-some-buffers (&optional list)
  "For each buffer in LIST, kill it silently if unmodified. Otherwise ask.
LIST defaults to all existing live buffers."
  (interactive)
  (if (null list)
      (setq list (buffer-list)))
  (while list
    (let* ((buffer (car list))
	   (name (buffer-name buffer)))
      (and (not (string-equal name ""))
	   (not (string-equal name "*Messages*"))
	  ;; (not (string-equal name "*Buffer List*"))
	   (not (string-equal name "*buffer-selection*"))
	   (not (string-equal name "*Shell Command Output*"))
	   (not (string-equal name "*scratch*"))
	   (/= (aref name 0) ? )
	   (if (buffer-modified-p buffer)
	       (if (yes-or-no-p
		    (format "Buffer %s has been edited. Kill? " name))
		   (kill-buffer buffer))
	     (kill-buffer buffer))))
    (setq list (cdr list))))

;; and its companion function

;; Kills all them buffers except scratch
;; optained from http://www.chrislott.org/geek/emacs/dotemacs.html
(defun nuke-all-buffers ()
  "kill all buffers, leaving *scratch* only"
  (interactive)
  (mapcar (lambda (x) (kill-buffer x))
	  (buffer-list))
  (delete-other-windows))


(global-set-key (kbd "C-x n a") 'nuke-all-buffers)
(global-set-key (kbd "C-x n s") 'nuke-some-buffers)



;; (global-set-key "\C-c\C-n\C-a" 'nuke-all-buffers)
;; (global-set-key "\C-c\C-n\C-s" 'nuke-some-buffers)


;; ;; point motion by screen lines (as opposed to text lines)
;; ;; TODO screen lines mode enabled by default for all buffers
;; (when (require 'screen-lines)
;;     ;; following lines commented out for keeping the original `kill-line'
;;     ;; in `screen-lines' minor mode
;;     (add-hook 'screen-lines-load-hook
;;               (lambda ()
;;                 (ad-disable-advice 'kill-line 'around 'screen-lines)
;;                 (ad-activate 'kill-line)))

;;     ;; nothing should appear in the mode line, when the `screen-lines' mode
;;     ;; is enabled in a buffer
;;     (setq screen-lines-minor-mode-string ""))


   (autoload 'screen-lines-mode "screen-lines"
             "Toggle Screen Lines minor mode for the current buffer." t)
   (autoload 'turn-on-screen-lines-mode "screen-lines"
             "Turn on Screen Lines minor mode for the current buffer." t)
   (autoload 'turn-off-screen-lines-mode "screen-lines"
             "Turn off Screen Lines minor mode for the current buffer." t)





;; turn on recent files
(recentf-mode 1)




;; w3m initialization

	

;;(setq w3m-home-page "about:")


;; Use MELPA repository
 
(require 'package) ;; You might already have this line
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize) ;; You might already have this line





;; maximize Emacs on startup

;; (setq initial-frame-alist
;;       `((left . 0) (top . 0)
;;         (width . 80) (height . 37)))



;; initial window
(setq initial-frame-alist
      '(
        (width . 80) ; character
        (height . 35) ; lines
        ))

;; ;; default/sebsequent window
;; (setq default-frame-alist
;;       '(
;;         (width . 100) ; character
;;         (height . 52) ; lines
;;         ))




;; (add-to-list 'custom-theme-load-path "~/.emacs.d/themes")


;; (add-to-list 'load-path "/usr/share/common-lisp/source/slime/")
;; (setq inferior-lisp-program "/usr/bin/sbcl")
;; (require 'slime)
;; (slime-setup)


;; ============================
;; Setup syntax, background, and foreground coloring
;; ============================

;; (set-background-color "Black")
;; (set-foreground-color "White")
;; (set-cursor-color "LightSkyBlue")
;; (set-mouse-color "LightSkyBlue")
;; (global-font-lock-mode t)
;; (setq font-lock-maximum-decoration t)


;; auctex stuff

   
;;    bib-display bib-display-mouse (mouse-1)
;;                           - Display citation, \ref or \label under point
;;    bib-find    bib-find-mouse (mouse-2)
;;                           - Edit citation, \ref or \label under point
;;    bib-make-bibliography  - Make BiBTeX file containing only cite keys used.
;;    bib-apropos            - Search BiBTeX source files for keywords.
;;    bib-etags              - Refreshes (or builds) the TAGS files for 
;;                             multi-file documents.
;;    bib-create-auto-file   - Used in bibtex-mode to create cite key 
;;                             completion .el file for auctex.
;;    bib-highlight-mouse    - Highlight \cite, \ref and \label commands in 
;;                             green when the mouse is over them.





(setq TeX-source-specials-mode t)


;; Preliminary setup for AUCTeX
(setq TeX-auto-save t)                  
(setq TeX-parse-self t)
(setq-default TeX-master nil)           ;set up AUCTeX to deal with
                                        ;multiple file documents.
(add-hook 'LaTeX-mode-hook (lambda ()
                                  (TeX-fold-mode 1))) ;turn on
                                                      ;tex-fold-mode
                                                      ;by default

(add-hook 'tex-mode-hook
 (lambda ()
 (define-key tex-mode-map (kbd [f1]) 'ctrl-y-in-vi)
 (define-key tex-mode-map (kbd [f2]) 'ctrl-e-in-vi)
 )
)


(add-hook 'LaTeX-mode-hook #'rainbow-delimiters-mode)



;; RefTeX
;;--------------------------------------------
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(setq reftex-enable-partial-scans t)
(setq reftex-save-parse-info t)
(setq reftex-use-multiple-selection-buffers t)
(setq reftex-texpath-environment-variables
     '("./inp:/PATH/TO/YOUR/TEX/DOCUMENTS//"))
(setq reftex-bibpath-environment-variables
     '("/PATH/TO/YOUR/BIB/FILE/"))





;;;;;;;;;;
;; LaTeX
;; (add-to-list 'auto-mode-alist '("\\.tex$" . latex-mode))
(add-hook 'tex-mode-hook (define-key global-map [(control return)] 'switch-to-buffer))
(add-hook 'bibtex-mode-hook 'turn-on-auto-fill)
;; AUCTeX is a good mode for editing LaTeX code, see the AUCTeX manual
(require 'tex-site nil t)
(setq TeX-default-mode 'LaTeX-mode); never open a file in TeX-mode, use LaTeX
(setq
;;    LaTeX-math-abbrev-prefix "!";I have an azerty keyboard, the default "`" is unconvenient
   LaTeX-math-list '(;most useful for me, not necessarily for you
     (?i "infty" nil) (?v "vee" nil)
     (?q "quad" nil) (?Q "qquad" nil)
     ))


(add-hook 'tex-mode-hook #'rainbow-delimiters-mode)


;; other latex functions for superscripts/subscripts


;; see http://bruda.ca/emacs-prog/latex-bindings.el for more info




(defun latex-surround-by (empty beg end back-over-end)
;;   "The main function implementing electric special characters
;; ($, ^,_, etc.; see for example `latex-subscript'). If region is
;; active, insert BEG before it and END after. Otherwise, insert EMPTY
;; and place point BACK-OVER-END characters before the end of EMPTY.

;; If `zmacs-regions' is nil, always behave as if region is *not*
;; active."
  (if (and zmacs-regions (region-active-p))
      (let ((text (buffer-substring (mark) (point))))
        (delete-region (mark) (point))
        (insert beg)
        (insert text)
        (insert end))
    (progn
      (insert empty)
      (backward-char back-over-end))))






;; (defun latex-subscript ()
;; ;;   "Electric subscript.
;; ;; If region is not active, inserts \"_{}\" and places cursor between
;; ;; braces.  Otherwise, inserts \"_{\" before region and \"}\"
;; ;; after. Basically, just a call to `latex-surround-by' with appropriate
;; ;arguments."
;;   (interactive)
;;   (latex-surround-by "_{}" "_{" "}" 1))

;; (defun latex-superscript ()
;; ;;   "Electric superscript.
;; ;; If region is not active, inserts \"^{}\" and places cursor between
;; ;; braces.  Otherwise, inserts \"^{\" before region and \"}\"
;; ;; after. Basically, just a call to `latex-surround-by' with appropriate
;; ;arguments."
;;   (interactive)
;;   (latex-surround-by "^{}" "^{" "}" 1))


;; For some reason, the functions above do not work



;; LaTeX sectioning search. 

(defun latex-next-section ()
  "Moves cursor to the nearest sectioning command below point."
  (interactive)
  (unless (search-forward-regexp "\\(\\\\\\(sub\\)*section\\)\\|\\(\\\\chapter\\)" nil t)
    (error "No more sectioning commands below.")))

(defun latex-previous-section ()
  "Moves cursor to the nearest sectioning command above point."
  (interactive)
  (unless (search-backward-regexp "\\(\\\\\\(sub\\)*section\\)\\|\\(\\\\chapter\\)" nil t)
    (error "No more sectioning commands above.")))










;; The actual bindings: 

(defun my-latex-bindings ()
;;   "Create new bindings in LaTeX mode. 
;; See `latex-mathematicize', `latex-ldots', `latex-subscript',
;; `latex-superscript', `latex-smart-delete', `latex-next-section',
;; `latex-previous-section'."

  ;;(define-key LaTeX-mode-map [(control $)] 'latex-mathematicize)
  ;(define-key LaTeX-mode-map [$] 'latex-mathematicize)
  ;(define-key LaTeX-mode-map [\.] 'latex-ldots)

  (define-key LaTeX-mode-map  (kbd "_") 'latex-subscript)
  (define-key LaTeX-mode-map  (kbd "^") 'latex-superscript)


  ;(define-key LaTeX-mode-map  [f10] 'latex-slides-hide)
  ;(define-key LaTeX-mode-map  [(control c) (control v)] 'latex-verb)
  ;(define-key LaTeX-mode-map  [backspace] 'latex-smart-delete)
  (define-key LaTeX-mode-map  [(control \`)] 
    (lambda () 
      "Moves point after the next closing brace."
      (interactive) 
      (if (equal (buffer-substring (point) (+ (point) 1))
                 "}")
          (forward-char 1)
        (search-forward "}" nil t))))

  (define-key LaTeX-mode-map  (kbd "<C-down>") 'latex-next-section)
  (define-key LaTeX-mode-map  (kbd "<C-up>") 'latex-previous-section)

)

;; Now I really activate the bindings

(add-hook 'LaTeX-mode-hook 'my-latex-bindings)




(add-hook 'LaTeX-mode-hook 'flyspell-mode) ;turn on flyspell mode by
                                           ;default


;; Use aspell for dictionaries
 (setq ispell-program-name "aspell")
   (setq ispell-really-aspell t)
   (setq ispell-extra-args '("--sug-mode=fast"))


;; `aspell' extensions should *not* be used
    (setq ispell-really-aspell nil)




 ;; dash character (`-') is considered as a word delimiter
    (setq flyspell-consider-dash-as-word-delimiter-flag t)



   (autoload 'flyspell-babel-setup "flyspell-babel")
   (add-hook 'latex-mode-hook 'flyspell-babel-setup)
;;

(require 'ispell-multi) 






(add-hook 'LaTeX-mode-hook '(lambda ()
;;    (turn-on-auto-fill)
   (turn-on-reftex) ;see the reftex man. Useful for labels and navigating among \section
   (LaTeX-math-mode)
   ;; (setq
     TeX-open-quote "``";text ed when you type a double quote : "
     TeX-close-quote "''";idem, but at the end of a word. I'm french...
;;      )
   (setq LaTeX-section-hook;I don't want to put useless labels everywhere
  '(LaTeX-section-heading
     LaTeX-section-title
     LaTeX-section-section))






   (setq ispell-tex-skip-alists
     (list
      (append
        (car ispell-tex-skip-alists) ;tell ispell to ignore content of this:
        '(("\\\\cite"             ispell-tex-arg-end)
          ("\\\\nocite"           ispell-tex-arg-end)
          ("\\\\includegraphics" ispell-tex-arg-end)
          ("\\\\bibliography"     ispell-tex-arg-end)
          ("\\\\ref"              ispell-tex-arg-end)
          ("\\\\web"              ispell-tex-arg-end) ;personal
          ("\\\\code"             ispell-tex-arg-end) ;personal
          ("\\\\label"            ispell-tex-arg-end)))
       (cadr ispell-tex-skip-alists)))
;;    ;; optionnaly add support for customized (not my fault!) versions of \section:
;;    (setq reftex-section-levels (append
;;        '(("partie" . -1) ("Partie" . -1) ("souspartie" . -2) ("question" . -3))
;;        reftex-section-levels))
;;    (setq LaTeX-section-list (append
;;        '(("partie" 1) ("Partie" 1) ("souspartie" 2) ("question" 3))
;;        LaTeX-section-list))
))


;; IMPORTANT
;; the previous 2 "))" are the conclusion of (add-hook 'LaTeX-mode-hook '(lambda ()
;; I can define functions and other stuff between that bit, but they would be restricted to
;; the Tex-Mode only



;; (setq font-latex-match-title-1-keywords '("partie" "Partie" ))
;; (setq font-latex-match-title-2-keywords '("souspartie" "question"))
;;;;;;;;;;










   (defun insert-dollar () "custom redefined insert-dollar" (interactive)
     (insert "$$")       ;in LaTeX mode, typing "$" automatically insert "$$"
     (backward-char 1)) ;and go between them: no more matching problems!

   (defun insert-quote () "custom redefined insert-quote" (interactive)
     (insert "``''")       ;in LaTeX mode, typing "$" automatically insert "$$"
     (backward-char 2)) ;and go between them: no more matching problems!

  ;;  (defun insert-curly () "custom redefined insert-curly" (interactive)
  ;;    (insert "{}")       ;in LaTeX mode, typing "$" automatically insert "$$"
  ;;    (backward-char 1)) ;and go between them: no more matching problems!

  ;; (defun insert-round () "custom redefined insert-round" (interactive)
  ;;    (insert "()")       ;in LaTeX mode, typing "$" automatically insert "$$"
  ;;    (backward-char 1)) ;and go between them: no more matching problems!

  ;; (defun insert-square () "custom redefined insert-square" (interactive)
  ;;    (insert "[]")       ;in LaTeX mode, typing "$" automatically insert "$$"
  ;;    (backward-char 1)) ;and go between them: no more matching problems!



  (defun insert-equal () "custom redefined insert-square" (interactive)
     (insert " <- ")       ;in LaTeX mode, typing "$" automatically insert "$$"
     ) ;and go between them: no more matching problems!

  (defun insert-right () "custom redefined insert-square" (interactive)
     (insert " -> ")       ;in LaTeX mode, typing "$" automatically insert "$$"
     ) ;and go between them: no more matching problems!



  (defun insert-magrittr () "custom redefined insert-square" (interactive)
     (insert " %>% ")       ;in LaTeX mode, typing "$" automatically insert "$$"
     ) ;and go between them: no more matching problems!

  (defun insert-magrittr2 () "custom redefined insert-square" (interactive)
     (insert " %<>% ")       ;in LaTeX mode, typing "$" automatically insert "$$"
     ) ;and go between them: no more matching problems!


  (defun insert-magrittr3 () "custom redefined insert-square" (interactive)
     (insert " |> ")       ;in LaTeX mode, typing "$" automatically insert "$$"
     ) ;and go between them: no more matching problems!




  (defun insert-underscore () "custom redefined insert-square" (interactive)
     (insert "_")       ;in LaTeX mode, typing "$" automatically insert "$$"
     ) ;and go between them: no more matching problems!

 


(defun latex-subscript () "custom redefined insert-subscript" (interactive)
     (insert "_{}")       ;in LaTeX mode, typing "$" automatically insert "$$"
     (backward-char 1)) ;and go between them: no more matching problems!


(defun latex-superscript () "custom redefined insert-superscript" (interactive)
     (insert "^{}")       ;in LaTeX mode, typing "$" automatically insert "$$"
     (backward-char 1)) ;and go between them: no more matching problems!




  (defun insert-double-quote () "custom redefined insert-square" (interactive)
     (insert "\""  )       ;in LaTeX mode, typing "$" automatically insert "$$"
     (insert "\""  )       ;in LaTeX mode, typing "$" automatically insert "$$"
     (backward-char 1)) ;and go between them: no more matching problems!


  (defun insert-latex-quote () "custom redefined insert-square" (interactive)
    (insert "``")   ;text ed when you type a double quote : "
     (insert  "''");idem, but at the end of a word. I'm french...
     (backward-char 2)) ;and go between them: no more matching problems!




;; (defun insert-double-quote ()
;;   "Insert a left or right double quote as appropriate. Left quotes are inserted after a space, newline, or >. Right quotes are inserted after any other character, except if the preceding character is a quote, cycles through the three quote styles."
;;   (interactive)
;;   (let ((ch (char-before)))
;;     (cond
;;      ((in-start-tag)
;;       (insert "\""))
;;      ((or (not ch)
;; 	  (char-equal ch ?>)
;; 	  (char-equal ch 32)
;; 	  (char-equal ch 10))
;;       (insert-xml-char "ldquo"))
;;      ((char-equal ch emacs-ldquo)
;;       (progn
;; 	(delete-backward-char 1)
;; 	(insert "\"")))
;;      ((char-equal ch emacs-quot)
;;       (progn
;; 	(delete-backward-char 1)
;; 	(insert-xml-char "rdquo")))
;;      ((char-equal ch emacs-rdquo)
;;       (progn
;; 	(delete-backward-char 1)
;; 	(insert-xml-char "ldquo")))
;;      ((char-equal ch emacs-ldquo)
;;       (progn
;; 	(delete-backward-char 1)
;; 	(insert-xml-char "rdquo")))
;;      ((char-equal ch emacs-lsquo)
;;       (insert-xml-char "ldquo"))
;;      (t (insert-xml-char "rdquo")))))



;; insert a macro

(fset 'latex-compile
   [?\C-x ?\C-s ?\C-c ?\C-c return])



;; backward-upcase
;,----
 (defun backward-upcase (&optional arg)
;   "Capitalize the previous word; with optional arg, capitalize
; the previous arg words"
   (interactive "P")
   (let ((words (if arg arg 1)))
     (upcase-word (- 0 words))))
;`----




;; Now I associate keys to the previous functions.



;; (local-set-key "{" 'insert-curly)
;; (local-set-key "(" 'insert-round)    ;;I do not need these lines as I am defining the local-set-key
                                        ;; directly in the mode-hook.
;; (local-set-key "[" 'insert-square)
;; (local-set-key "@@" 'backward-upcase)


(add-hook 'TeX-mode-hook #'rainbow-delimiters-mode)


(add-hook 'TeX-mode-hook
         (lambda () (local-set-key "$" 'insert-dollar)))

;; Maybe I had better get rid of this
(add-hook 'TeX-mode-hook
         (lambda () (local-set-key "\"" 'insert-latex-quote)))



;; (add-hook 'TeX-mode-hook
;;          (lambda () (local-set-key "{" 'insert-curly)))

;; (add-hook 'TeX-mode-hook
;;          (lambda () (local-set-key "(" 'insert-round)))

;; (add-hook 'TeX-mode-hook
;;          (lambda () (local-set-key "[" 'insert-square)))


(add-hook 'TeX-mode-hook
         (lambda () (local-set-key "\M-1" 'backward-upcase)))

(add-hook 'TeX-mode-hook
         (lambda () (local-set-key '[(f10)] 'latex-compile)))



;; The following line is useful if I want to use that key-binding for every mode 
;; by defining a GLOBAL rather than a LOCAL key. 

;;(global-set-key '[(f1)]          'latex-compile)



;; Now some customization for Python


; I have already defined the new functions and associated names to them.
; Now I make them available to Python-mode.

; NB: If I defined the same functions only within e.g. the TeX-mode, then they would
; not be available for Python mode.



;; (add-hook 'python-mode-hook
;;          (lambda () (local-set-key "{" 'insert-curly)))

;; (add-hook 'python-mode-hook
;;          (lambda () (local-set-key "(" 'insert-round)))

;; (add-hook 'python-mode-hook
;;          (lambda () (local-set-key "[" 'insert-square)))

(add-hook 'python-mode-hook
         (lambda () (local-set-key "\M-1" 'backward-upcase)))

(add-hook 'python-mode-hook
         (lambda () (local-set-key "'" 'insert-double-quote)))


(add-hook 'python-mode-hook #'rainbow-delimiters-mode)


;; Now some customization for haskell

(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)

(add-hook 'haskell-mode-hook #'rainbow-delimiters-mode)


;; (add-hook 'haskell-mode-hook
;;          (lambda () (local-set-key "{" 'insert-curly)))

;; (add-hook 'haskell-mode-hook
;;          (lambda () (local-set-key "(" 'insert-round)))

;; (add-hook 'haskell-mode-hook
;;          (lambda () (local-set-key "[" 'insert-square)))

(add-hook 'haskell-mode-hook
         (lambda () (local-set-key "\M-1" 'backward-upcase)))

(add-hook 'haskell-mode-hook
         (lambda () (local-set-key "'" 'insert-double-quote)))

(add-hook 'haskell-mode-hook
         (lambda () (local-set-key ";" 'insert-equal)))





;; Now some customization for R


; I have already defined the new functions and associated names to them.
; Now I make them available to R-mode.

; NB: If I defined the same functions only within e.g. the TeX-mode, then they would
; not be available for Python mode.



;; (add-hook 'ess-mode-hook
;;          (lambda () (local-set-key "{" 'insert-curly)))

;; (add-hook 'ess-mode-hook
;;          (lambda () (local-set-key "(" 'insert-round)))

;; (add-hook 'ess-mode-hook
;;          (lambda () (local-set-key "[" 'insert-square)))

(add-hook 'ess-mode-hook
         (lambda () (local-set-key "\M-1" 'backward-upcase)))

(add-hook 'ess-mode-hook
         (lambda () (local-set-key ";" 'insert-equal)))

(add-hook 'ess-mode-hook
         (lambda () (local-set-key "ù" 'insert-right)))


(add-hook 'ess-mode-hook
         (lambda () (local-set-key "§" 'insert-magrittr)))

(add-hook 'ess-mode-hook
         (lambda () (local-set-key "£" 'insert-magrittr2)))

(add-hook 'ess-mode-hook
         (lambda () (local-set-key "?" 'insert-magrittr3)))


(add-hook 'ess-mode-hook #'rainbow-delimiters-mode)


(add-hook 'ess-mode-hook
         (lambda () (local-set-key "_" 'insert-underscore)))

(add-hook 'ess-mode-hook
         (lambda () (local-set-key "'" 'insert-double-quote)))


;; Now some customization for Fortran 90


;; (add-hook 'f90-mode-hook
;;          (lambda () (local-set-key "{" 'insert-curly)))

;; (add-hook 'f90-mode-hook
;;          (lambda () (local-set-key "(" 'insert-round)))

;; (add-hook 'f90-mode-hook
;;          (lambda () (local-set-key "[" 'insert-square)))

(add-hook 'f90-mode-hook
         (lambda () (local-set-key "\M-1" 'backward-upcase)))

(add-hook 'f90-mode-hook
         (lambda () (local-set-key "'" 'insert-double-quote)))


;; Now some customization for cc-mode


;; (add-hook 'c-mode-common-hook
;;          (lambda () (local-set-key "{" 'insert-curly)))

;; (add-hook 'c-mode-common-hook
;;          (lambda () (local-set-key "(" 'insert-round)))

;; (add-hook 'c-mode-common-hook
;;          (lambda () (local-set-key "[" 'insert-square)))

(add-hook 'c-mode-common-hook
         (lambda () (local-set-key "\M-1" 'backward-upcase)))

(add-hook 'c-mode-hook
         (lambda () (local-set-key "'" 'insert-double-quote)))

(add-hook 'c-mode-hook #'rainbow-delimiters-mode)





;; Now some customization for Maxima


; I have already defined the new functions and associated names to them.
; Now I make them available to Maxima-mode.

; NB: If I defined the same functions only within e.g. the TeX-mode, then they would
; not be available for Maxima mode.



;; (add-hook 'maxima-mode-hook
;;          (lambda () (local-set-key "{" 'insert-curly)))

;; (add-hook 'maxima-mode-hook
;;          (lambda () (local-set-key "(" 'insert-round)))

;; (add-hook 'maxima-mode-hook
;;          (lambda () (local-set-key "[" 'insert-square)))

(add-hook 'maxima-mode-hook
         (lambda () (local-set-key "'" 'insert-double-quote)))


(setq auto-mode-alist (cons '("\\.max" . maxima-mode) auto-mode-alist))
;(setq load-path (cons "/usr/share/maxima/5.9.0/emacs" load-path ))
(autoload 'maxima "maxima" "Running Maxima interactively" t)
(autoload 'maxima-mode "maxima" "Maxima editing mode" t)

(add-hook 'maxima-mode-hook #'rainbow-delimiters-mode)


   ;;; add autoload of imaxima and maxima.
   (autoload 'imaxima "imaxima" "Frontend for maxima with Image support" t)
   (autoload 'maxima "maxima" "Frontend for maxima" t)
   ;;; add autoload of imath.
   (autoload 'imath-mode "imath" "Imath mode for math formula input" t)
   
   ;;; Make the line effective if you want to use maxima mode with imaxima.
   (setq imaxima-use-maxima-mode-flag t)




;; Mouse Settings
;; ============================

;; mouse button one drags the scroll bar
(global-set-key [vertical-scroll-bar down-mouse-1] 'scroll-bar-drag)

;; setup scroll mouse settings
(defun up-slightly () (interactive) (scroll-up 5))
(defun down-slightly () (interactive) (scroll-down 5))
(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)

(defun up-one () (interactive) (scroll-up 1))
(defun down-one () (interactive) (scroll-down 1))
(global-set-key [S-mouse-4] 'down-one)
(global-set-key [S-mouse-5] 'up-one)

(defun up-a-lot () (interactive) (scroll-up))
(defun down-a-lot () (interactive) (scroll-down))
(global-set-key [C-mouse-4] 'down-a-lot)
(global-set-key [C-mouse-5] 'up-a-lot)


;; ============================
;; Display
;; ============================

;; disable startup message
(setq inhibit-startup-message t)



;; setup font
;; (set-default-font
;;  "-Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO8859-1")


;; The font above did not work well on a 4k monitor and did not scale
;; so I replaced it

;; setup font
;; (set-default-font "DejaVu Sans Mono-10" )





;; display the current time
(display-time)

;; Show column number at bottom of screen
(column-number-mode 1)

;; alias y to yes and n to no
(defalias 'yes-or-no-p 'y-or-n-p)

;; highlight matches from searches
(setq isearch-highlight t)
(setq search-highlight t)
(setq-default transient-mark-mode t)

(when (fboundp 'blink-cursor-mode)
  (blink-cursor-mode -1))


;; ===========================
;; Behaviour
;; ===========================

;; Pgup/dn will return exactly to the starting point.
(setq scroll-preserve-screen-position 1)

;; don't automatically add new lines when scrolling down at
;; the bottom of a buffer
(setq next-line-add-newlines nil)

;; scroll just one line when hitting the bottom of the window
(setq scroll-step 1)
(setq scroll-conservatively 1)

;; format the title-bar to always include the buffer name
(setq frame-title-format "emacs - %b")

;; show a menu only when running within X (save real estate when
;; in console)
(menu-bar-mode (if window-system 1 -1))



;; turn on word wrapping in text mode
(add-hook 'text-mode-hook 'turn-on-auto-fill)

(add-hook 'text-mode-hook #'rainbow-delimiters-mode)


;; replace highlighted text with what I type rather than just
;; inserting at a point
(delete-selection-mode t)

;; resize the mini-buffer when necessary
(setq resize-minibuffer-mode t)

;; highlight during searching
(setq query-replace-highlight t)

;; highlight incremental search
(setq search-highlight t)

;; kill trailing white space on save
;;(autoload 'nuke-trailing-whitespace "whitespace" nil t)
;;(add-hook 'write-file-hooks 'nuke-trailing-whitespace)







;; ;; ===========================
;; ;; Buffer Navigation
;; ;; ============================

;; ;; Iswitchb is much nicer for inter-buffer navigation.
;; (cond ((fboundp 'iswitchb-mode)                ; GNU Emacs 21
;;        (iswitchb-mode 1))
;;       ((fboundp 'iswitchb-default-keybindings) ; Old-style activation
;;        (iswitchb-default-keybindings))
;;       (t nil))                                 ; Oh well.

;; ;; keys for buffer creation and navigation
;; (global-set-key [(control x) (control b)] 'iswitchb-buffer)
;; (global-set-key [(control x) (f)] 'find-file)





;; ==========================
;; C/C++ indentation
;; ==========================
(defun my-c-mode-common-hook ()
  (turn-on-font-lock)
  (c-set-offset 'substatement-open 0)
  (c-set-offset 'case-label '+)
;  (c-set-offset 'arglist-cont-nonempty c-lineup-arglist)
)

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

;; ===========================
;; HTML/CSS stuff
;; ===========================
(setq html-mode-hook 'turn-off-auto-fill)
(autoload 'css-mode "css-mode")
(setq auto-mode-alist
     (cons '("\\.css\\'" . css-mode) auto-mode-alist))

;; take any buffer and turn it into an html file,
;; including syntax hightlighting
(require 'htmlize)

;; ===========================
;; Matlab Mode
;; ===========================

(autoload 'matlab-mode "matlab.elc" "Enter Matlab mode." t)
(setq auto-mode-alist (cons '("\\.m\\'" . matlab-mode) auto-mode-alist))
(autoload 'matlab-shell "matlab.elc" "Interactive Matlab mode." t)

;; ============================
;; Set up which modes to use for which file extensions
;; ============================
(setq auto-mode-alist
      (append
       '(
	 ("\\.h$"             . c++-mode)
	 ("\\.dps$"           . pascal-mode)
	 ("\\.hs$"           . haskell-mode)
	 ("\\.py$"            . python-mode)
	 ("\\.Xdefaults$"     . xrdb-mode)
	 ("\\.Xenvironment$"  . xrdb-mode)
	 ("\\.Xresources$"    . xrdb-mode)
	 ("\\.tei$"           . xml-mode)
	 ("\\.php$"           . php-mode)
	 ;("\\.max$"           . maxima-mode)

	 ) auto-mode-alist))

;; ===========================
;; Custom Functions
;; ===========================

;; print an ascii table
(defun ascii-table ()
  (interactive)
  (switch-to-buffer "*ASCII*")
  (erase-buffer)
  (insert (format "ASCII characters up to number %d.\n" 254))
  (let ((i 0))
    (while (< i 254)
      (setq i (+ i 1))
      (insert (format "%4d %c\n" i i))))
  (beginning-of-buffer))

;; insert functions
(global-unset-key "\C-t")
(global-set-key "\C-t\C-h" 'insert-function-header)

;; indent the entire buffer
(defun c-indent-buffer ()
  "Indent entire buffer of C source code."
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (< (point) (point-max))
      (c-indent-command)
      (end-of-line)
      (forward-char 1))))


(defun insert-function-header () (interactive)
  (insert "  /**\n")
  (insert "   * \n")
  (insert "   * @param: \n")
  (insert "   * @return: \n")
  (insert "   */\n"))

(global-set-key "\C-t\C-g" 'insert-file-header)

(defun insert-file-header () (interactive)
  (insert "/*////////////////////////////////////*/\n")
  (insert "/**\n")
  (insert " * \n")
  (insert " * Author: Lorenzo Isella\n")
  (insert " */\n")
  (insert "/*////////////////////////////////////*/\n"))


;; set up the compiling options
(setq compile-command "make"
      compilation-ask-about-save nil
      compilation-window-height 10)
;; (global-set-key [f7] 'compile)





;; Change title bar to ~/file-directory if the current buffer is a
;; real file or buffer name if it is just a buffer.
(setq frame-title-format 
      '(:eval 
        (if buffer-file-name 
            (replace-regexp-in-string (getenv "HOME") "~" 
                                      (file-name-directory buffer-file-name)) 
          (buffer-name))))

;; Preserve the owner and group of the file you're editing 
(setq backup-by-copying-when-mismatch t)

;; turn on recent files
(recentf-mode 1)


;; Make scripts executable on Save (saves having to do the chmod every time)
(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)



;; (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.
;;  '(background "blue")
;;  '(font-lock-builtin-face ((((class color) (background dark)) (:foreground "Turquoise"))))
;;  '(font-lock-comment-face ((t (:foreground "MediumAquamarine"))))
;;  '(font-lock-constant-face ((((class color) (background dark)) (:bold t :foreground "DarkOrchid"))))
;;  '(font-lock-doc-string-face ((t (:foreground "green2"))))
;;  '(font-lock-function-name-face ((t (:foreground "SkyBlue"))))
;;  '(font-lock-keyword-face ((t (:bold t :foreground "CornflowerBlue"))))
;;  '(font-lock-preprocessor-face ((t (:italic nil :foreground "CornFlowerBlue"))))
;;  '(font-lock-reference-face ((t (:foreground "DodgerBlue"))))
;;  '(font-lock-string-face ((t (:foreground "LimeGreen"))))
;;  '(font-lock-type-face ((t (:foreground "#9290ff"))))
;;  '(font-lock-variable-name-face ((t (:foreground "PaleGreen"))))
;;  '(font-lock-warning-face ((((class color) (background dark)) (:foreground "yellow" :background "red"))))
;;  '(highlight ((t (:background "CornflowerBlue"))))
;;  '(list-mode-item-selected ((t (:background "gold"))))
;;  '(makefile-space-face ((t (:background "wheat"))))
;;  '(mode-line ((t (:background "Navy"))))
;;  '(paren-match ((t (:background "darkseagreen4"))))
;;  '(region ((t (:background "DarkSlateBlue"))))
;;  '(show-paren-match ((t (:foreground "black" :background "wheat"))))
;;  '(show-paren-mismatch ((((class color)) (:foreground "white" :background "red"))))
;;  '(speedbar-button-face ((((class color) (background dark)) (:foreground "green4"))))
;;  '(speedbar-directory-face ((((class color) (background dark)) (:foreground "khaki"))))
;;  '(speedbar-file-face ((((class color) (background dark)) (:foreground "cyan"))))
;;  '(speedbar-tag-face ((((class color) (background dark)) (:foreground "Springgreen"))))
;;  '(vhdl-speedbar-architecture-selected-face ((((class color) (background dark)) (:underline t :foreground "Blue"))))
;;  '(vhdl-speedbar-entity-face ((((class color) (background dark)) (:foreground "darkGreen"))))
;;  '(vhdl-speedbar-entity-selected-face ((((class color) (background dark)) (:underline t :foreground "darkGreen"))))
;;  '(vhdl-speedbar-package-face ((((class color) (background dark)) (:foreground "black"))))
;;  '(vhdl-speedbar-package-selected-face ((((class color) (background dark)) (:underline t :foreground "black"))))
;;  '(widget-field ((((class grayscale color) (background light)) (:background "DarkBlue")))))


;; Make the buffer name unique

(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward)





;;-----------------------------------------------------------------------------
;; Custom functions, keybindings, and aliases
;;-----------------------------------------------------------------------------
;; Commonly used files
(defun life () (interactive) (find-file "~/Documents/org/life.org"))
(defun caldera () (interactive) (find-file "~/Documents/org/caldera.org"))
(defun emacs () (interactive) (find-file "~/.emacs"))
(defun obsolescence () (interactive)
  (find-file "~/.elisp/color-theme-colorful-obsolescence.el"))

;; Function keys
;(global-set-key [f1] 'life)
;(global-set-key [f2] 'caldera)
(global-set-key [f11] 'org-agenda-list)
(global-set-key [f4] 'kill-this-buffer)

(global-set-key [f5] 'eshell)
(global-set-key [f6] 'shell)
(global-set-key  [f7] 'reload)

;; (global-set-key [f7] 'find-dired)
;;(global-set-key [f6] 'find-dired)
;;(global-set-key [f7] 'grep-find)
(global-set-key [f8] 'delete-other-windows)

;(global-set-key [f9] 'something)
 ; (global-set-key [f10] 'mpg123)
;; (global-set-key [f11] 'obsolescence)
;(global-set-key [f12] 'emacs)
;; Add:
;; call-last-kbd-macro
;; find-other-file
;; find-grep-dired
(define-key global-map [(meta s)] 'save-buffer) ; imitates Squeak Browser save
(global-set-key "\C-x\C-b" 'buffer-menu) ; better window management than default
(global-set-key "\M-h" 'backward-kill-word) ; alternative for backspace, cool
(global-set-key "\C-cc" 'comment-region)
(global-set-key "\C-cn" 'uncomment-region)

;;Function to refresh a buffer (i.e. reload the corresponding file from disk

(global-set-key "\C-c\C-r"
'(lambda () "Refresh the buffer from the disk (prompt of modified)."
(interactive)
(revert-buffer t (not (buffer-modified-p)) t)))



;; alternative for M-x, suggestion from Effective Emacs [I don't use these, yet]
(global-set-key "\C-x\C-m" 'execute-extended-command)
(global-set-key "\C-c\C-m" 'execute-extended-command)

;; Like C-k but from the end of line, cool
(defun backwards-kill-line () (interactive) (kill-region
                   (point) (progn (beginning-of-line) (point))))
(global-set-key "\C-cu" 'backwards-kill-line) ; C-u in zsh

;; Useful function for inserting date quickly
(defun my-insert-date ()
  (interactive)
  (insert (format-time-string "%a, %b %e, %Y")))
(global-set-key "\C-cd" 'my-insert-date)
(global-set-key "\C-ct" 'my-insert-date)

(defun my-insert-heading ()
  (interactive)
  (if (equal major-mode 'emacs-lisp-mode)
      (insert ";;-----------------------------------------------------------------------------
;; 
;;-----------------------------------------------------------------------------")
    )
  (if (equal major-mode 'python-mode)
      (insert "#------------------------------------------------------------------------------
# 
#------------------------------------------------------------------------------"	      ))
  (if (or (equal major-mode 'css-mode) (equal major-mode 'javascript-mode))
      (insert "/* ------------------------------
   
   ------------------------------ */"))
)
(global-set-key "\C-ch" 'my-insert-heading)

;; other-window (C-x b) in reverse
(defun other-window-reverse (&optional x)
  (interactive "P")
  (if (equal x nil)
      (other-window -1)
    (other-window (- 0 x)) ))
(global-set-key (kbd "C-x p") 'other-window-reverse)

;; ;; Press F3 in Dired to open file in Windows, cool
;; (defun w32-browser (file)
;;   "Run default Windows application associated with FILE.
;; If no associated application, then `find-file' FILE."
;;   (or (condition-case nil
;; 	  (w32-shell-execute nil file) ; Use Windows file association
;; 	(error nil))
;;       (find-file file)))              ; E.g. no Windows file association

;; (eval-after-load "dired"
;;   '(define-key dired-mode-map [f3] (lambda () (interactive)
;; 				     (w32-browser (dired-replace-in-string 
;; 				       "/" "\\" (dired-get-filename))))))


(defun org-print (&optional region)
  "Print current buffer using org-mode"
  (interactive)
  (color-theme-google)
  (setq org-fontify-done-headline t)
  (if region
      (w32-print-print-region-htmlize)
    (w32-print-print-buffer-htmlize))
  (setq org-fontify-done-headline nil))
  
(global-set-key (kbd "\C-cp") 'org-print)

(defun org-print-region ()
  "Print region using org-mode"
  (interactive)
  (org-print t))

(global-set-key (kbd "\C-cr") 'org-print-region)

(defun iwb ()
  "indent whole buffer"
  (interactive)
  (delete-trailing-whitespace)
  (indent-region (point-min) (point-max) nil)
  (untabify (point-min) (point-max)))

;; Convert to Dos or Unix
(defun convert-unix-to-dos ()
  (interactive)
  (set-buffer-file-coding-system 'undecided-dos))

(defun convert-dos-to-unix ()
  (interactive)
  (set-buffer-file-coding-system 'undecided-unix))

(defun count-words (start end)
  "Print number of words in the region."
  (interactive "r")
  (save-excursion
    (save-restriction
      (narrow-to-region start end)
      (goto-char (point-min))
      (count-matches "\\sw+"))))

(defun count-words-analysis (start end)
  "Count how many times each word is used in the region.
    Punctuation is ignored."
  (interactive "r")
  (let (words)
    (save-excursion
      (goto-char start)
      (while (re-search-forward "\\w+" end t)
	(let* ((word (intern (match-string 0)))
	       (cell (assq word words)))
	  (if cell
	      (setcdr cell (1+ (cdr cell)))
	    (setq words (cons (cons word 1) words))))))
    (when (interactive-p)
      (message "%S" words))
    words))


(defun download-calendar-file (calUrl icsFilename)
  (call-process-shell-command (concat "wget" " --no-check-certificate " calUrl " -O " icsFilename)))



;; Custom aliases
(defalias 'word-count 'count-words)
(defalias 'word-count-analysis 'count-words-analysis)
(defalias 'tt 'toggle-truncate-lines)
(defalias 'fa 'Footnote-add-footnote)		;M-x fa to add footnote




;; Mutt support.
   (add-hook 'mail-mode-hook 'turn-on-auto-fill)

(setq auto-mode-alist (append '(("/tmp/mutt.*" . mail-mode)) auto-mode-alist))

;; ( setq
;;      auto-mode-alist
;;      ( cons '("/tmp/mutt.*$" . post-mode) auto-mode-alist )
;;    )
;;    (add-hook 'mail-mode-hook 'turn-on-auto-fill)


;; By an unknown contributor
          
          (global-set-key "§" 'match-paren)
          
          (defun match-paren (arg)
            "Go to the matching paren if on a paren; otherwise insert §."
            (interactive "p")
            (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
                  ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
                  (t (self-insert-command (or arg 1)))))





;; Macro to quickly generate a new eshell




(fset 'aux
   (kmacro-lambda-form [?\S-\C-u escape ?x ?e ?s ?h ?e ?l ?l return escape ?x ?r ?e ?n ?a ?m ?e ?- ?b ?u ?f ?f tab return ?a ?u ?x ?i ?l ?i ?a ?r ?y] 0 "%d"))






;; (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.
;;  '(custom-enabled-themes (quote (solarized-dark)))
;;  '(custom-safe-themes
;;    (quote
;;     ("8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" default))))
;; (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.
;;  )



;; (load-theme #'abyss t)



;; (load-theme 'ample t t)
;; (load-theme 'ample-flat t t)
;; (load-theme 'ample-light t t)
;; ;; choose one to enable
;; (enable-theme 'ample)



;; see https://stackoverflow.com/questions/2951797/wrapping-selecting-text-in-enclosing-characters-in-emacs

;; (global-set-key (kbd "M-[") 'insert-pair)
;; (global-set-key (kbd "M-{") 'insert-pair)
;; (global-set-key (kbd "M-\"") 'insert-pair)


;; Simpler to just enable the electric pair mode to be able to use "" around some text which I selected

  (electric-pair-mode 1)


;; ;; make electric-pair-mode work on more brackets
;; (setq electric-pair-pairs
;;       '(
;;         (?\" . ?\")
;;         (?\{ . ?\})))


;; remember cursor position, for emacs 25.1 or later
(save-place-mode 1)







;; ;; See http://ergoemacs.org/emacs/emacs_delete_backward_char_or_bracket_text.html


;; (defun xah-delete-backward-char-or-bracket-text ()
;;   "Delete backward 1 character, but if it's a \"quote\" or bracket ()[]{}【】「」 etc, delete bracket and the inner text, push the deleted text to `kill-ring'.

;; What char is considered bracket or quote is determined by current syntax table.

;; If `universal-argument' is called first, do not delete inner text.

;; URL `http://ergoemacs.org/emacs/emacs_delete_backward_char_or_bracket_text.html'
;; Version 2017-07-02"
;;   (interactive)
;;   (if (and delete-selection-mode (region-active-p))
;;       (delete-region (region-beginning) (region-end))
;;     (cond
;;      ((looking-back "\\s)" 1)
;;       (if current-prefix-arg
;;           (xah-delete-backward-bracket-pair)
;;         (xah-delete-backward-bracket-text)))
;;      ((looking-back "\\s(" 1)
;;       (progn
;;         (backward-char)
;;         (forward-sexp)
;;         (if current-prefix-arg
;;             (xah-delete-backward-bracket-pair)
;;           (xah-delete-backward-bracket-text))))
;;      ((looking-back "\\s\"" 1)
;;       (if (nth 3 (syntax-ppss))
;;           (progn
;;             (backward-char )
;;             (xah-delete-forward-bracket-pairs (not current-prefix-arg)))
;;         (if current-prefix-arg
;;             (xah-delete-backward-bracket-pair)
;;           (xah-delete-backward-bracket-text))))
;;      (t
;;       (delete-char -1)))))

;; (defun xah-delete-backward-bracket-text ()
;;   "Delete the matching brackets/quotes to the left of cursor, including the inner text.

;; This command assumes the left of point is a right bracket, and there's a matching one before it.

;; What char is considered bracket or quote is determined by current syntax table.

;; URL `http://ergoemacs.org/emacs/emacs_delete_backward_char_or_bracket_text.html'
;; Version 2017-07-02"
;;   (interactive)
;;   (progn
;;     (forward-sexp -1)
;;     (mark-sexp)
;;     (kill-region (region-beginning) (region-end))))

;; (defun xah-delete-backward-bracket-pair ()
;;   "Delete the matching brackets/quotes to the left of cursor.

;; After the command, mark is set at the left matching bracket position, so you can `exchange-point-and-mark' to select it.

;; This command assumes the left of point is a right bracket, and there's a matching one before it.

;; What char is considered bracket or quote is determined by current syntax table.

;; URL `http://ergoemacs.org/emacs/emacs_delete_backward_char_or_bracket_text.html'
;; Version 2017-07-02"
;;   (interactive)
;;   (let (( $p0 (point)) $p1)
;;     (forward-sexp -1)
;;     (setq $p1 (point))
;;     (goto-char $p0)
;;     (delete-char -1)
;;     (goto-char $p1)
;;     (delete-char 1)
;;     (push-mark (point) t)
;;     (goto-char (- $p0 2))))

;; (defun xah-delete-forward-bracket-pairs ( &optional @delete-inner-text-p)
;;   "Delete the matching brackets/quotes to the right of cursor.
;; If *delete-inner-text-p is true, also delete the inner text.

;; After the command, mark is set at the left matching bracket position, so you can `exchange-point-and-mark' to select it.

;; This command assumes the char to the right of point is a left bracket or quote, and have a matching one after.

;; What char is considered bracket or quote is determined by current syntax table.

;; URL `http://ergoemacs.org/emacs/emacs_delete_backward_char_or_bracket_text.html'
;; Version 2017-07-02"
;;   (interactive)
;;   (if @delete-inner-text-p
;;       (progn
;;         (mark-sexp)
;;         (kill-region (region-beginning) (region-end)))
;;     (let (($pt (point)))
;;       (forward-sexp)
;;       (delete-char -1)
;;       (push-mark (point) t)
;;       (goto-char $pt)
;;       (delete-char 1))))






;; (global-set-key (kbd "C-x C-k") 'xah-delete-backward-char-or-bracket-text)




;; ;; See http://ergoemacs.org/emacs/elisp_insert_brackets_by_pair.html

;; (defun xah-insert-bracket-pair (@left-bracket @right-bracket &optional @wrap-method)
;;   "Insert brackets around selection, word, at point, and maybe move cursor in between.

;;  *left-bracket and *right-bracket are strings. *wrap-method must be either 'line or 'block. 'block means between empty lines.

;; • if there's a region, add brackets around region.
;; • If *wrap-method is 'line, wrap around line.
;; • If *wrap-method is 'block, wrap around block.
;; • if cursor is at beginning of line and its not empty line and contain at least 1 space, wrap around the line.
;; • If cursor is at end of a word or buffer, one of the following will happen:
;;  xyz▮ → xyz(▮)
;;  xyz▮ → (xyz▮)       if in one of the lisp modes.
;; • wrap brackets around word if any. e.g. xy▮z → (xyz▮). Or just (▮)

;; URL `http://ergoemacs.org/emacs/elisp_insert_brackets_by_pair.html'
;; Version 2017-01-17"
;;   (if (use-region-p)
;;       (progn ; there's active region
;;         (let (
;;               ($p1 (region-beginning))
;;               ($p2 (region-end)))
;;           (goto-char $p2)
;;           (insert @right-bracket)
;;           (goto-char $p1)
;;           (insert @left-bracket)
;;           (goto-char (+ $p2 2))))
;;     (progn ; no text selection
;;       (let ($p1 $p2)
;;         (cond
;;          ((eq @wrap-method 'line)
;;           (setq $p1 (line-beginning-position) $p2 (line-end-position))
;;           (goto-char $p2)
;;           (insert @right-bracket)
;;           (goto-char $p1)
;;           (insert @left-bracket)
;;           (goto-char (+ $p2 (length @left-bracket))))
;;          ((eq @wrap-method 'block)
;;           (save-excursion
;;             (progn
;;               (if (re-search-backward "\n[ \t]*\n" nil 'move)
;;                   (progn (re-search-forward "\n[ \t]*\n")
;;                          (setq $p1 (point)))
;;                 (setq $p1 (point)))
;;               (if (re-search-forward "\n[ \t]*\n" nil 'move)
;;                   (progn (re-search-backward "\n[ \t]*\n")
;;                          (setq $p2 (point)))
;;                 (setq $p2 (point))))
;;             (goto-char $p2)
;;             (insert @right-bracket)
;;             (goto-char $p1)
;;             (insert @left-bracket)
;;             (goto-char (+ $p2 (length @left-bracket)))))
;;          ( ;  do line. line must contain space
;;           (and
;;            (eq (point) (line-beginning-position))
;;            ;; (string-match " " (buffer-substring-no-properties (line-beginning-position) (line-end-position)))
;;            (not (eq (line-beginning-position) (line-end-position))))
;;           (insert @left-bracket )
;;           (end-of-line)
;;           (insert  @right-bracket))
;;          ((and
;;            (or ; cursor is at end of word or buffer. i.e. xyz▮
;;             (looking-at "[^-_[:alnum:]]")
;;             (eq (point) (point-max)))
;;            (not (or
;;                  (string-equal major-mode "xah-elisp-mode")
;;                  (string-equal major-mode "emacs-lisp-mode")
;;                  (string-equal major-mode "lisp-mode")
;;                  (string-equal major-mode "lisp-interaction-mode")
;;                  (string-equal major-mode "common-lisp-mode")
;;                  (string-equal major-mode "clojure-mode")
;;                  (string-equal major-mode "xah-clojure-mode")
;;                  (string-equal major-mode "scheme-mode"))))
;;           (progn
;;             (setq $p1 (point) $p2 (point))
;;             (insert @left-bracket @right-bracket)
;;             (search-backward @right-bracket )))
;;          (t (progn
;;               ;; wrap around “word”. basically, want all alphanumeric, plus hyphen and underscore, but don't want space or punctuations. Also want chinese chars
;;               ;; 我有一帘幽梦,不知与谁能共。多少秘密在其中,欲诉无人能懂。
;;               (skip-chars-backward "-_[:alnum:]")
;;               (setq $p1 (point))
;;               (skip-chars-forward "-_[:alnum:]")
;;               (setq $p2 (point))
;;               (goto-char $p2)
;;               (insert @right-bracket)
;;               (goto-char $p1)
;;               (insert @left-bracket)
;;               (goto-char (+ $p2 (length @left-bracket))))))))))



;; (defun xah-insert-paren ()
;;   (interactive)
;;   (xah-insert-bracket-pair "(" ")") )

;; (defun xah-insert-bracket ()
;;   (interactive)
;;   (xah-insert-bracket-pair "[" "]") )

;; (defun xah-insert-brace ()
;;   (interactive)
;;   (xah-insert-bracket-pair "{" "}") )




;;  (setq skeleton-pair t)
;;     (setq skeleton-pair-alist
;;           '((?\( _ ?\))
;;             (?[  _ ?])
;;             (?{  _ ?})
;;             (?\" _ ?\")))






;; (defadvice delete-backward-char (before autopair activate)
;;       (when (and (char-after)
;;                  (eq this-command 'delete-backward-char)
;;                  (eq (char-after)
;;                      (car (last (assq (char-before) skeleton-pair-alist)))))
;;         (delete-char 1)))


;; (global-set-key (kbd "DEL")  'delete-backward-char)



(require 'smartparens-config)



(global-set-key (kbd "M-p") 'sp-unwrap-sexp)






;; ;;; zenburn-theme.el --- Dark and clean theme

;; ;; Copyright (C) 2011 Free Software Foundation, Inc.

;; ;; Author: Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
;; ;; Created: 2011-05-02

;; ;; 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 3 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.
;; ;; <http://www.gnu.org/licenses/>.

;; ;; zenburn theme, a nice low-contrast theme

;; ### The version I was using

;; (deftheme zenburn
;;   "The Zenburn theme.")

;; (let ( (zenburn-fg		"#dcdccc")
;;        (zenburn-bg-1		"#2b2b2b")
;;        (zenburn-bg		"#3f3f3f")
;;        (zenburn-bg+1		"#4f4f4f")
;;        (zenburn-bg+2		"#5f5f5f")
;;        (zenburn-red+1		"#dca3a3")
;;        (zenburn-red		"#cc9393")
;;        (zenburn-red-1		"#bc8383")
;;        (zenburn-red-2		"#ac7373")
;;        (zenburn-red-3		"#9c6363")
;;        (zenburn-red-4		"#8c5353")
;;        (zenburn-orange		"#dfaf8f")
;;        (zenburn-yellow		"#f0dfaf")
;;        (zenburn-yellow-1	"#e0cf9f")
;;        (zenburn-yellow-2	"#d0bf8f")

;;        (zenburn-green-4         "#2e3330")
;;        (zenburn-green-1		"#5f7f5f")
;;        (zenburn-green		"#7f9f7f")
;;        (zenburn-green+1		"#8fb28f")
;;        (zenburn-green+2		"#9fc59f")
;;        (zenburn-green+3		"#afd8af")
;;        (zenburn-green+4		"#bfebbf")
;;        (zenburn-cyan		"#93e0e3")
;;        (zenburn-blue+1		"#94bff3")
;;        (zenburn-blue		"#8cd0d3")
;;        (zenburn-blue-1		"#7cb8bb")
;;        (zenburn-blue-2		"#6ca0a3")
;;        (zenburn-blue-3		"#5c888b")
;;        (zenburn-blue-4		"#4c7073")
;;        (zenburn-blue-5		"#366060")
;;        (zenburn-magenta		"#dc8cc3"))

;;   (custom-theme-set-faces
;;     'zenburn

;;     ;; setup for inheritance
;;     `(zenburn-background ((t (:background ,zenburn-bg))))
;;     `(zenburn-background-1 ((t (:background ,zenburn-bg+1))))
;;     `(zenburn-background-2 ((t (:background ,zenburn-bg+2))))
;;     `(zenburn-primary-1 ((t (:foreground ,zenburn-yellow-1 :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-red-1 ((t (:foreground ,zenburn-red-1))))
;;     `(zenburn-red-2 ((t (:foreground ,zenburn-red-2))))
;;     `(zenburn-red-3 ((t (:foreground ,zenburn-red-3))))
;;     `(zenburn-red-4 ((t (:foreground ,zenburn-red-4))))
;;     `(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))))

;;     ;; basics
;;     '(Bold ((t (:weight bold))))
;;     '(bold-italic ((t (:slant italic :weight bold))))
;;     `(default ((t (:background ,zenburn-bg :foreground ,zenburn-fg))))
;;     '(fixed-pitch ((t (:weight bold))))
;;     '(italic ((t (:slant italic))))
;;     '(underline ((t (:underline t))))


;;     '(fringe ((t (:inherit 'default))))
;;     '(header-line ((t (:inherit 'zenburn-highlight-damp
;; 			:box (:color "#2e3330" :line-width 2)))))
;;     '(highlight ((t (:weight bold :underline t))))
;;     '(hover-highlight ((t (:underline t :foreground "#f8f893"))))
;;     '(match ((t (:weight bold))))
;;     `(menu ((t (:background "#1e2320"))))
;;     `(mode-line-inactive ((t (:background ,zenburn-green-4 :foreground "#88b090"
;; 			       :box (:color "#2e3330" :line-width 2)))))
;;     '(mouse ((t (:inherit 'zenburn-foreground))))
;;     '(paren ((t (:inherit 'zenburn-lowlight-1))))
;;     '(trailing-whitespace ((t (:inherit font-lock-warning))))
;;     `(Buffer-menu-buffer ((t (:inherit 'zenburn-primary-1))))
;;     `(border ((t (:background ,zenburn-bg))))
;;     `(button ((t (:foreground ,zenburn-yellow :background "#506070"
;; 		   :weight bold :underline t))))
;;     `(cursor ((t (:background "#aaaaaa" :foreground nil))))
;;     `(escape-glyph-face ((t (:foreground ,zenburn-red))))
;;     `(minibuffer-prompt ((t (:foreground ,zenburn-yellow))))
;;     `(mode-line ((t (:foreground ,zenburn-yellow :background "#1e2320"
;; 		      :box (:color "#1e2320" :line-width 2)))))
;;     `(region ((t (:foreground nil :background ,zenburn-bg+2))))
;;     `(scroll-bar ((t (:background ,zenburn-bg+2))))
;;     `(secondary-selection ((t (:foreground nil :background ,zenburn-bg+2))))
;;     `(tool-bar ((t (:background ,zenburn-bg+2))))

;;     ;; apt-utils
;;     '(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
;;     '(breakpoint-enabled-bitmap ((t (:inherit 'zenburn-primary-1))))
;;     '(breakpoint-disabled-bitmap ((t (:inherit font-lock-comment))))

;;     ;; calendar
;;     '(calendar-today ((t (:underline nil :inherit 'zenburn-primary-2))))

;;     ;; change-log
;;     '(change-log-date ((t (:inherit 'zenburn-blue))))

;;     ;; circe
;;     '(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))))

;;     ;; comint
;;     '(comint-highlight-input ((t (:inherit 'zenburn-primary-1))))
;;     '(comint-highlight-prompt ((t (:inherit 'zenburn-primary-2))))

;;     ;; compilation
;;     '(compilation-info ((t (:inherit 'zenburn-primary-1))))
;;     '(compilation-warning ((t (:inherit font-lock-warning))))

;;     ;; cua
;;     '(cua-rectangle ((t (:inherit region))))

;;     ;; custom
;;     '(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 (:inherit 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))))

;;     ;; diary
;;     '(diary ((t (:underline nil :inherit 'zenburn-primary-1))))

;;     ;; dictionary
;;     '(dictionary-button ((t (:inherit fancy-widget-button))))
;;     '(dictionary-reference ((t (:inherit 'zenburn-primary-1))))
;;     '(dictionary-word-entry ((t (:inherit font-lock-keyword))))

;;     ;; diff
;;     '(diff-header-face ((t (:inherit 'zenburn-highlight-subtle))))
;;     '(diff-index-face ((t (:inherit bold))))
;;     '(diff-file-header-face ((t (:inherit bold))))
;;     '(diff-hunk-header-face ((t (:inherit 'zenburn-highlight-subtle))))
;;     '(diff-added-face ((t (:inherit 'zenburn-primary-3))))
;;     '(diff-removed-face ((t (:inherit 'zenburn-blue))))
;;     '(diff-context-face ((t (:inherit font-lock-comment))))
;;     '(diff-refine-change-face ((t (:inherit 'zenburn-background-2))))

;;     ;; emms
;;     `(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
;;     '(erc-action-face ((t (:inherit erc-default))))
;;     '(erc-bold-face ((t (:weight bold))))
;;     '(erc-current-nick-face ((t (:inherit 'zenburn-primary-1))))
;;     '(erc-dangerous-host-face ((t (:inherit font-lock-warning))))
;;     '(erc-direct-msg-face ((t (:inherit erc-default))))
;;     '(erc-error-face ((t (:inherit font-lock-warning))))
;;     '(erc-fool-face ((t (:inherit 'zenburn-lowlight-1))))
;;     '(erc-highlight-face ((t (:inherit hover-highlight))))
;;     '(erc-keyword-face ((t (:inherit 'zenburn-primary-1))))
;;     '(erc-my-nick-face ((t (:inherit 'zenburn-red))))
;;     '(erc-nick-default-face ((t (:inherit bold))))
;;     '(erc-nick-msg-face ((t (:inherit erc-default))))
;;     '(erc-notice-face ((t (:inherit 'zenburn-green))))
;;     '(erc-pal-face ((t (:inherit 'zenburn-primary-3))))
;;     '(erc-prompt-face ((t (:inherit 'zenburn-primary-2))))
;;     '(erc-timestamp-face ((t (:inherit 'zenburn-green+1))))
;;     '(erc-underline-face ((t (:inherit underline))))
;;     `(erc-default-face ((t (:foreground ,zenburn-fg))))
;;     `(erc-input-face ((t (:foreground ,zenburn-yellow))))


;;     ;; eshell
;;     '(eshell-prompt ((t (:inherit 'zenburn-primary-1))))
;;     `(eshell-ls-archive ((t (:foreground ,zenburn-red-1 :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))))

;;     ;; flyspell
;;     `(flyspell-duplicate ((t (:foreground ,zenburn-yellow :weight bold))))
;;     `(flyspell-incorrect ((t (:foreground ,zenburn-red :weight bold))))

;;     ;; font-latex
;;     '(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))))

;;     ;; font-locking
;;     '(font-lock-builtin-face ((t (:inherit 'zenburn-blue))))
;;     `(font-lock-comment-face ((t (:foreground ,zenburn-green :slant italic))))
;;     `(font-lock-comment-delimiter-face ((t (:foreground ,zenburn-green))))
;;     '(font-lock-constant-face ((t (:inherit 'zenburn-primary-4))))
;;     '(font-lock-doc-face ((t (:inherit 'zenburn-green+1))))
;;     `(font-lock-doc-string-face ((t (:foreground ,zenburn-blue+1))))
;;     `(font-lock-function-name-face ((t (:foreground ,zenburn-blue))))
;;     '(font-lock-keyword-face ((t (:inherit 'zenburn-primary-1))))
;;     '(font-lock-negation-char-face ((t (:inherit 'zenburn-primary-1))))
;;     '(font-lock-preprocessor-face ((t (:inherit 'zenburn-red))))
;;     '(font-lock-string-face ((t (:inherit 'zenburn-red))))
;;     '(font-lock-type-face ((t (:inherit 'zenburn-primary-3))))
;;     `(font-lock-variable-name-face ((t (:foreground ,zenburn-yellow))))
;;     '(font-lock-warning-face ((t (:inherit 'zenburn-highlight-alerting))))
;;     '(font-lock-pseudo-keyword-face ((t (:inherit 'zenburn-primary-2))))
;;     '(font-lock-operator-face ((t (:inherit 'zenburn-primary-3))))

;;     ;; gnus
;;     '(gnus-group-mail-1-face ((t (:bold t :inherit gnus-group-mail-1-empty))))
;;     '(gnus-group-mail-1-empty-face ((t (:inherit gnus-group-news-1-empty))))
;;     '(gnus-group-mail-2-face ((t (:bold t :inherit gnus-group-mail-2-empty))))
;;     '(gnus-group-mail-2-empty-face ((t (:inherit gnus-group-news-2-empty))))
;;     '(gnus-group-mail-3-face ((t (:bold t :inherit gnus-group-mail-3-empty))))
;;     '(gnus-group-mail-3-empty-face ((t (:inherit gnus-group-news-3-empty))))
;;     '(gnus-group-mail-4-face ((t (:bold t :inherit gnus-group-mail-4-empty))))
;;     '(gnus-group-mail-4-empty-face ((t (:inherit gnus-group-news-4-empty))))
;;     '(gnus-group-mail-5-face ((t (:bold t :inherit gnus-group-mail-5-empty))))
;;     '(gnus-group-mail-5-empty-face ((t (:inherit gnus-group-news-5-empty))))
;;     '(gnus-group-mail-6-face ((t (:bold t :inherit gnus-group-mail-6-empty))))
;;     '(gnus-group-mail-6-empty-face ((t (:inherit gnus-group-news-6-empty))))
;;     '(gnus-group-mail-low-face ((t (:bold t :inherit gnus-group-mail-low-empty))))
;;     '(gnus-group-mail-low-empty-face ((t (:inherit gnus-group-news-low-empty))))
;;     '(gnus-group-news-1-face ((t (:bold t :inherit gnus-group-news-1-empty))))
;;     '(gnus-group-news-2-face ((t (:bold t :inherit gnus-group-news-2-empty))))
;;     '(gnus-group-news-3-face ((t (:bold t :inherit gnus-group-news-3-empty))))
;;     '(gnus-group-news-4-face ((t (:bold t :inherit gnus-group-news-4-empty))))
;;     '(gnus-group-news-5-face ((t (:bold t :inherit gnus-group-news-5-empty))))
;;     '(gnus-group-news-6-face ((t (:bold t :inherit gnus-group-news-6-empty))))
;;     '(gnus-group-news-low-face ((t (:bold t :inherit gnus-group-news-low-empty))))
;;     '(gnus-header-content-face ((t (:inherit message-header-other))))
;;     '(gnus-header-from-face ((t (:inherit message-header-from))))
;;     '(gnus-header-name-face ((t (:inherit message-header-name))))
;;     '(gnus-header-newsgroups-face ((t (:inherit message-header-other))))
;;     '(gnus-header-subject-face ((t (:inherit message-header-subject))))
;;     '(gnus-summary-cancelled-face ((t (:inherit 'zenburn-highlight-alerting))))
;;     '(gnus-summary-high-ancient-face ((t (:inherit 'zenburn-blue))))
;;     '(gnus-summary-high-read-face ((t (:inherit 'zenburn-green :weight bold))))
;;     '(gnus-summary-high-ticked-face ((t (:inherit 'zenburn-primary-2))))
;;     '(gnus-summary-high-unread-face ((t (:inherit 'zenburn-foreground :weight bold))))
;;     '(gnus-summary-low-ancient-face ((t (:inherit 'zenburn-blue :weight normal))))
;;     '(gnus-summary-low-read-face ((t (:inherit 'zenburn-green :weight normal))))
;;     '(gnus-summary-low-ticked-face ((t (:inherit 'zenburn-primary-2))))
;;     '(gnus-summary-low-unread-face ((t (:inherit 'zenburn-foreground :weight normal))))
;;     '(gnus-summary-normal-ancient-face ((t (:inherit 'zenburn-blue :weight normal))))
;;     '(gnus-summary-normal-read-face ((t (:inherit 'zenburn-green :weight normal))))
;;     '(gnus-summary-normal-ticked-face ((t (:inherit 'zenburn-primary-2))))
;;     '(gnus-summary-normal-unread-face ((t (:inherit 'zenburn-foreground :weight normal))))
;;     '(gnus-summary-selected-face ((t (:inherit 'zenburn-primary-1))))
;;     `(gnus-cite-1-face ((t (:foreground ,zenburn-blue))))
;;     `(gnus-cite-10-face ((t (:foreground ,zenburn-yellow-1))))
;;     `(gnus-cite-11-face ((t (:foreground ,zenburn-yellow))))
;;     `(gnus-cite-2-face ((t (:foreground ,zenburn-blue-1))))
;;     `(gnus-cite-3-face ((t (:foreground ,zenburn-blue-2))))
;;     `(gnus-cite-4-face ((t (:foreground ,zenburn-green+2))))
;;     `(gnus-cite-5-face ((t (:foreground ,zenburn-green+1))))
;;     `(gnus-cite-6-face ((t (:foreground ,zenburn-green))))
;;     `(gnus-cite-7-face ((t (:foreground ,zenburn-red))))
;;     `(gnus-cite-8-face ((t (:foreground ,zenburn-red-1))))
;;     `(gnus-cite-9-face ((t (:foreground ,zenburn-red-2))))
;;     `(gnus-group-news-1-empty-face ((t (:foreground ,zenburn-yellow))))
;;     `(gnus-group-news-2-empty-face ((t (:foreground ,zenburn-green+3))))
;;     `(gnus-group-news-3-empty-face ((t (:foreground ,zenburn-green+1))))
;;     `(gnus-group-news-4-empty-face ((t (:foreground ,zenburn-blue-2))))
;;     `(gnus-group-news-5-empty-face ((t (:foreground ,zenburn-blue-3))))
;;     `(gnus-group-news-6-empty-face ((t (:inherit 'zenburn-lowlight-1))))
;;     `(gnus-group-news-low-empty-face ((t (:inherit 'zenburn-lowlight-1))))
;;     `(gnus-signature-face ((t (:foreground ,zenburn-yellow))))
;;     `(gnus-x-face ((t (:background ,zenburn-fg :foreground ,zenburn-bg))))

;;     ;; help-argument
;;     '(help-argument-name ((t (:weight bold))))

;;     ;; hi-lock-mode
;;     `(hi-yellow  ((t (:foreground ,zenburn-yellow))))
;;     `(hi-pink  ((t (:foreground ,zenburn-red-4))))
;;     `(hi-green  ((t (:foreground ,zenburn-green-1))))
;;     `(hi-blue  ((t (:foreground ,zenburn-blue-5))))


;;     ;; highlight
;;     '(highlight-current-line ((t (:inherit 'zenburn-highlight-subtle))))

;;     ;; hightlight the current line
;;     `(hl-line ((t (:inherit nil :background ,zenburn-bg-1))))

;;     ;; holiday
;;     '(holiday ((t (:underline t :inherit 'zenburn-primary-4))))

;;     ;; ibuffer
;;     '(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))))

;;     ;; icomplete
;;     `(icompletep-choices ((t (:foreground ,zenburn-fg))))
;;     `(icompletep-determined ((t (:foreground ,zenburn-green+1))))
;;     `(icompletep-nb-candidates ((t (:foreground ,zenburn-green+3))))
;;     `(icompletep-keys ((t (:foreground ,zenburn-red))))

;;     ;; ido
;;     '(ido-first-match ((t (:inherit 'zenburn-primary-1))))
;;     '(ido-only-match ((t (:inherit 'zenburn-primary-2))))
;;     `(ido-subdir ((t (:foreground ,zenburn-yellow))))

;;     ;; imaxima
;;     '(imaxima-latex-error ((t (:inherit font-lock-warning))))

;;     ;; info
;;     `(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))))

;;     ;; isearch
;;     `(isearch ((t (:foreground ,zenburn-yellow :background ,zenburn-bg-1))))
;;     `(isearch-fail ((t (:foreground ,zenburn-fg :background ,zenburn-red-4))))
;;     `(lazy-highlight ((t (:foreground ,zenburn-yellow :background ,zenburn-bg+2))))

;;     ;; jabber-mode
;;     '(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
;;     '(jde-java-font-lock-modifier-face ((t (:inherit 'zenburn-primary-2))))
;;     '(jde-java-font-lock-doc-tag-face ((t (:inherit 'zenburn-primary-1))))
;;     '(jde-java-font-lock-constant-face ((t (:inherit font-lock-constant))))
;;     '(jde-java-font-lock-package-face ((t (:inherit 'zenburn-primary-3))))
;;     '(jde-java-font-lock-number-face ((t (:inherit font-lock-constant))))
;;     '(jde-java-font-lock-operator-face ((t (:inherit font-lock-keyword))))
;;     '(jde-java-font-lock-link-face ((t (:inherit 'zenburn-primary-5 :underline t))))

;;     ;; keywiz
;;     '(keywiz-right-face ((t (:inherit 'zenburn-primary-1))))
;;     '(keywiz-wrong-face ((t (:inherit font-lock-warning))))
;;     '(keywiz-command-face ((t (:inherit 'zenburn-primary-2))))

;;     ;; magit
;;     '(magit-section-title ((t (:inherit 'zenburn-red))))
;;     '(magit-item-highlight ((t (:inherit 'zenburn-blue))))
;;     '(magit-branch ((t (:inherit 'zenburn-blue))))

;;     ;; makefile
;;     '(makefile-space ((t (:inherit font-lock-warning))))
;;     '(makefile-shell ((t (nil))))

;;     ;; message
;;     '(message-cited-text-face ((t (:inherit font-lock-comment))))
;;     '(message-header-name-face ((t (:inherit 'zenburn-green+1))))
;;     '(message-header-other-face ((t (:inherit 'zenburn-green))))
;;     '(message-header-to-face ((t (:inherit 'zenburn-primary-1))))
;;     '(message-header-from-face ((t (:inherit 'zenburn-primary-1))))
;;     '(message-header-cc-face ((t (:inherit 'zenburn-primary-1))))
;;     '(message-header-newsgroups-face ((t (:inherit 'zenburn-primary-1))))
;;     '(message-header-subject-face ((t (:inherit 'zenburn-primary-2))))
;;     '(message-header-xheader-face ((t (:inherit 'zenburn-green))))
;;     '(message-mml-face ((t (:inherit 'zenburn-primary-1))))
;;     '(message-separator-face ((t (:inherit font-lock-comment))))

;;     ;; minimap
;;     '(minimap-active-region-background ((t (:foreground nil :background "#233323"))))

;;     ;; org-mode
;;     `(org-agenda-clocking
;;        ((t (:background ,zenburn-green-4 :weight bold))) t)
;;     `(org-agenda-date-today
;;        ((t (:foreground ,zenburn-cyan :slant italic :weight bold))) t)
;;     `(org-agenda-date
;;        ((t (:foreground ,zenburn-blue))) t)
;;     `(org-agenda-date-weekend
;;        ((t (:foreground ,zenburn-blue+1))) t)

;;     '(org-agenda-structure
;;        ((t (:inherit font-lock-comment))))
;;     `(org-archived ((t (:foreground ,zenburn-fg :weight bold))))
;;     `(org-checkbox ((t (:background ,zenburn-bg+2 :foreground "white"
;; 			      :box (:line-width 1 :style released-button)))))
;;     `(org-date ((t (:foreground ,zenburn-blue :underline t))))
;;     `(org-deadline-announce ((t (:foreground ,zenburn-red-1))))
;;     `(org-done ((t (:bold t :weight bold :foreground ,zenburn-green+3))))
;;     `(org-formula ((t (:foreground ,zenburn-yellow-2))))
;;     `(org-headline-done ((t (:foreground ,zenburn-green+3))))
;;     `(org-hide ((t (:foreground ,zenburn-bg-1))))
;;     `(org-level-1 ((t (:foreground ,zenburn-orange))))
;;     `(org-level-2 ((t (:foreground ,zenburn-yellow))))
;;     `(org-level-3 ((t (:foreground ,zenburn-blue))))
;;     `(org-level-4 ((t (:foreground ,zenburn-cyan))))
;;     `(org-level-5 ((t (:foreground ,zenburn-blue-1))))
;;     `(org-level-6 ((t (:foreground ,zenburn-blue-2))))
;;     `(org-level-7 ((t (:foreground ,zenburn-blue-3))))
;;     `(org-level-8 ((t (:foreground ,zenburn-blue-4))))
;;     `(org-link ((t (:foreground ,zenburn-yellow-2 :underline t))))
;;     `(org-scheduled ((t (:foreground ,zenburn-green+4))))
;;     `(org-scheduled-previously ((t (:foreground ,zenburn-red-4))))
;;     `(org-scheduled-today ((t (:foreground ,zenburn-blue+1))))
;;     `(org-special-keyword ((t (:foreground ,zenburn-yellow-1))))
;;     `(org-table ((t (:foreground ,zenburn-green+2))))
;;     `(org-tag ((t (:bold t :weight bold))))
;;     `(org-time-grid ((t (:foreground ,zenburn-orange))))
;;     `(org-todo ((t (:bold t :foreground ,zenburn-red :weight bold))))
;;     '(org-upcoming-deadline ((t (:inherit font-lock-keyword-face))))
;;     `(org-warning ((t (:bold t :foreground ,zenburn-red :weight bold))))

;;     ;; outline
;;     '(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))))


;;     ;; rainbow-delimiters
;;     ;; `(rainbow-delimiters-depth-1-face ((t (:foreground ,zenburn-cyan))))
;;     ;; `(rainbow-delimiters-depth-2-face ((t (:foreground ,zenburn-yellow))))
;;     ;; `(rainbow-delimiters-depth-3-face ((t (:foreground ,zenburn-blue+1))))
;;     ;; `(rainbow-delimiters-depth-4-face ((t (:foreground ,zenburn-red+1))))
;;     ;; `(rainbow-delimiters-depth-5-face ((t (:foreground ,zenburn-green+1))))
;;     ;; `(rainbow-delimiters-depth-6-face ((t (:foreground ,zenburn-blue-1))))
;;     ;; `(rainbow-delimiters-depth-7-face ((t (:foreground ,zenburn-orange))))
;;     ;; `(rainbow-delimiters-depth-8-face ((t (:foreground ,zenburn-magenta))))
;;     ;; `(rainbow-delimiters-depth-9-face ((t (:foreground ,zenburn-yellow-2))))
;;     ;; `(rainbow-delimiters-depth-10-face ((t (:foreground ,zenburn-green+2))))
;;     ;; `(rainbow-delimiters-depth-11-face ((t (:foreground ,zenburn-blue+1))))
;;     ;; `(rainbow-delimiters-depth-12-face ((t (:foreground ,zenburn-red-4))))

;;     ;; my alternative

;;     `(rainbow-delimiters-depth-1-face ((t (:foreground , "#1e90ff" ))))
;;     `(rainbow-delimiters-depth-2-face ((t (:foreground , "#ff00ff" ))))
;;     `(rainbow-delimiters-depth-3-face ((t (:foreground ,"#90ee90"))))
;;     `(rainbow-delimiters-depth-4-face ((t (:foreground ,"#f8f8ff"))))
;;     `(rainbow-delimiters-depth-5-face ((t (:foreground ,"#ffff00"))))
;;     `(rainbow-delimiters-depth-6-face ((t (:foreground ,zenburn-blue-1))))
;;     `(rainbow-delimiters-depth-7-face ((t (:foreground ,zenburn-orange))))
;;     `(rainbow-delimiters-depth-8-face ((t (:foreground ,zenburn-magenta))))
;;     `(rainbow-delimiters-depth-9-face ((t (:foreground ,zenburn-yellow-2))))
;;     `(rainbow-delimiters-depth-10-face ((t (:foreground ,zenburn-green+2))))
;;     `(rainbow-delimiters-depth-11-face ((t (:foreground ,zenburn-blue+1))))
;;     `(rainbow-delimiters-depth-12-face ((t (:foreground ,zenburn-red-4))))



    
;;     ;; rcirc
;;     '(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))))

;;     ;; show-paren
;;     '(show-paren-mismatch ((t (:inherit font-lock-warning :weight bold))))
;;     `(show-paren-match ((t (:background ,zenburn-blue-5 :underline nil))))

;;     ;; setnu
;;     '(setnu-line-number ((t (:inherit 'zenburn-lowlight-2))))

;;     ;; speedbar
;;     '(speedbar-button-face ((t (:inherit 'zenburn-primary-1))))
;;     '(speedbar-file-face ((t (:inherit 'zenburn-primary-2))))
;;     '(speedbar-directory-face ((t (:inherit 'zenburn-primary-5))))
;;     '(speedbar-tag-face ((t (:inherit font-lock-function-name))))
;;     '(speedbar-highlight-face ((t (:underline t))))

;;     ;; strokes
;;     '(strokes-char-face ((t (:inherit font-lock-keyword))))

;;     ;; todoo
;;     '(todoo-item-header-face ((t (:inherit 'zenburn-primary-1))))
;;     '(todoo-item-assigned-header-face ((t (:inherit 'zenburn-primary-2))))
;;     `(todoo-sub-item-header-face ((t (:foreground ,zenburn-yellow))))


;;     ;; tuareg
;;     '(tuareg-font-lock-governing-face ((t (:inherit 'zenburn-primary-2))))
;;     '(tuareg-font-lock-interactive-error-face ((t (:inherit font-lock-warning))))
;;     '(tuareg-font-lock-interactive-output-face ((t (:inherit 'zenburn-primary-3))))
;;     '(tuareg-font-lock-operator-face ((t (:inherit font-lock-operator))))

;;     ;; twittering-mode
;;     '(twittering-username-face ((t (:inherit 'zenburn-red-2))))
;;     '(twittering-uri-face ((t (:inherit 'zenburn-blue :underline t))))

;;     ;; w3m
;;     '(w3m-form-button-face ((t (:inherit widget-button))))
;;     '(w3m-form-button-pressed-face ((t (:inherit widget-button-pressed))))
;;     '(w3m-form-button-mouse-face ((t (:inherit widget-button-pressed))))
;;     '(w3m-tab-unselected-face ((t (:box (:line-width 1 :style released-button)))))
;;     '(w3m-tab-selected-face ((t (:box (:line-width 1 :style pressed-button)))))
;;     '(w3m-tab-unselected-retrieving-face
;;        ((t (:inherit w3m-tab-unselected widget-inactive))))
;;     '(w3m-tab-selected-retrieving-face
;;        ((t (:inherit w3m-tab-selected widget-inactive))))
;;     '(w3m-tab-background-face ((t (:inherit 'zenburn-highlight-subtle))))
;;     '(w3m-anchor-face ((t (:inherit 'zenburn-primary-1))))
;;     '(w3m-arrived-anchor-face ((t (:inherit 'zenburn-primary-2))))
;;     '(w3m-image-face ((t (:inherit 'zenburn-primary-3))))
;;     '(w3m-form-face ((t (:inherit widget-field))))

;;     ;; which
;;     '(which-func ((t (:inherit mode-line))))

;;     ;; wl (wanderlust)
;;     ;; some faces end with -face, while other don't; confusing
;;     '(wl-highlight-folder-few-face ((t (:inherit 'zenburn-red-2))))
;;     '(wl-highlight-folder-many-face ((t (:inherit 'zenburn-red-1))))
;;     '(wl-highlight-folder-path-face ((t (:inherit 'zenburn-orange))))
;;     '(wl-highlight-folder-unread-face ((t (:inherit 'zenburn-blue))))
;;     '(wl-highlight-folder-zero-face ((t (:inherit 'zenburn-fg))))
;;     '(wl-highlight-folder-unknown-face ((t (:inherit 'zenburn-blue))))
;;     '(wl-highlight-message-citation-header ((t (:inherit 'zenburn-red-1))))
;;     '(wl-highlight-message-cited-text-1 ((t (:inherit 'zenburn-red))))
;;     '(wl-highlight-message-cited-text-2 ((t (:inherit 'zenburn-green+2))))
;;     '(wl-highlight-message-cited-text-3 ((t (:inherit 'zenburn-blue))))
;;     '(wl-highlight-message-cited-text-4 ((t (:inherit 'zenburn-blue+))))
;;     '(wl-highlight-message-header-contents-face ((t (:inherit 'zenburn-green))))
;;     '(wl-highlight-message-headers-face ((t (:inherit 'zenburn-red+1))))
;;     '(wl-highlight-message-important-header-contents ((t (:inherit 'zenburn-green+2))))
;;     '(wl-highlight-message-header-contents ((t (:inherit 'zenburn-green+1))))
;;     '(wl-highlight-message-important-header-contents2 ((t (:inherit 'zenburn-green+2))))
;;     '(wl-highlight-message-signature ((t (:inherit 'zenburn-green))))
;;     '(wl-highlight-message-unimportant-header-contents ((t (:inherit 'zenburn-lowlight-2))))
;;     '(wl-highlight-summary-answered-face ((t (:inherit 'zenburn-blue))))
;;     '(wl-highlight-summary-disposed-face ((t (:inherit 'zenburn-lowlight-2
;; 					       :slant italic))))
;;     '(wl-highlight-summary-new-face ((t (:inherit 'zenburn-blue))))
;;     '(wl-highlight-summary-normal-face ((t (:inherit 'zenburn-fg))))
;;     `(wl-highlight-summary-thread-top-face ((t (:foreground ,zenburn-yellow))))
;;     `(wl-highlight-thread-indent-face ((t (:foreground ,zenburn-magenta))))
;;     '(wl-highlight-summary-refiled-face ((t (:inherit 'zenburn-lowlight-2))))
;;     '(wl-highlight-summary-displaying-face ((t (:underline t :weight bold))))
;;     ))

;; (provide-theme 'zenburn)

;; ;; Local Variables:
;; ;; no-byte-compile: t
;; ;; End:






;; ;;;; Alternative zenburn


;; ;;; zenburn-theme.el --- A low contrast color theme for Emacs.

;; ;; Copyright (C) 2011-2018 Bozhidar Batsov

;; ;; Author: Bozhidar Batsov <bozhidar@batsov.com>
;; ;; URL: http://github.com/bbatsov/zenburn-emacs
;; ;; Version: 2.7-snapshot

;; ;; 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:

;; ;; A port of the popular Vim theme Zenburn for Emacs 24+, built on top
;; ;; of the new built-in theme support in Emacs 24.

;; ;;; Credits:

;; ;; Jani Nurminen created the original theme for vim on which this port
;; ;; is based.

;; ;;; Code:

;; (deftheme zenburn "The Zenburn color theme")

;; (defgroup zenburn-theme nil
;;   "Zenburn theme."
;;   :group 'faces
;;   :prefix "zenburn-"
;;   :link '(url-link :tag "GitHub" "http://github.com/bbatsov/zenburn-emacs")
;;   :tag "Zenburn theme")

;; ;;;###autoload
;; (defcustom zenburn-override-colors-alist '()
;;   "Place to override default theme colors.

;; You can override a subset of the theme's default colors by
;; defining them in this alist."
;;   :group 'zenburn-theme
;;   :type '(alist
;;           :key-type (string :tag "Name")
;;           :value-type (string :tag " Hex")))

;; (defvar zenburn-use-variable-pitch nil
;;   "When non-nil, use variable pitch face for some headings and titles.")

;; (defvar zenburn-scale-org-headlines nil
;;   "Whether `org-mode' headlines should be scaled.")

;; (defvar zenburn-scale-outline-headlines nil
;;   "Whether `outline-mode' headlines should be scaled.")

;; (defcustom zenburn-height-minus-1 0.8
;;   "Font size -1."
;;   :type 'number
;;   :group 'zenburn-theme
;;   :package-version '(zenburn . "2.6"))

;; (defcustom zenburn-height-plus-1 1.1
;;   "Font size +1."
;;   :type 'number
;;   :group 'zenburn-theme
;;   :package-version '(zenburn . "2.6"))

;; (defcustom zenburn-height-plus-2 1.15
;;   "Font size +2."
;;   :type 'number
;;   :group 'zenburn-theme
;;   :package-version '(zenburn . "2.6"))

;; (defcustom zenburn-height-plus-3 1.2
;;   "Font size +3."
;;   :type 'number
;;   :group 'zenburn-theme
;;   :package-version '(zenburn . "2.6"))

;; (defcustom zenburn-height-plus-4 1.3
;;   "Font size +4."
;;   :type 'number
;;   :group 'zenburn-theme
;;   :package-version '(zenburn . "2.6"))

;; ;;; Color Palette

;; (defvar zenburn-default-colors-alist
;;   '(("zenburn-fg-1"     . "#656555")
;;     ("zenburn-fg-05"    . "#989890")
;;     ("zenburn-fg"       . "#DCDCCC")
;;     ("zenburn-fg+1"     . "#FFFFEF")
;;     ("zenburn-fg+2"     . "#FFFFFD")
;;     ("zenburn-bg-2"     . "#000000")
;;     ("zenburn-bg-1"     . "#2B2B2B")
;;     ("zenburn-bg-08"    . "#303030")
;;     ("zenburn-bg-05"    . "#383838")
;;     ("zenburn-bg"       . "#3F3F3F")
;;     ("zenburn-bg+05"    . "#494949")
;;     ("zenburn-bg+1"     . "#4F4F4F")
;;     ("zenburn-bg+2"     . "#5F5F5F")
;;     ("zenburn-bg+3"     . "#6F6F6F")
;;     ("zenburn-red-6"    . "#6C3333")
;;     ("zenburn-red-5"    . "#7C4343")
;;     ("zenburn-red-4"    . "#8C5353")
;;     ("zenburn-red-3"    . "#9C6363")
;;     ("zenburn-red-2"    . "#AC7373")
;;     ("zenburn-red-1"    . "#BC8383")
;;     ("zenburn-red"      . "#CC9393")
;;     ("zenburn-red+1"    . "#DCA3A3")
;;     ("zenburn-red+2"    . "#ECB3B3")
;;     ("zenburn-orange"   . "#DFAF8F")
;;     ("zenburn-yellow-2" . "#D0BF8F")
;;     ("zenburn-yellow-1" . "#E0CF9F")
;;     ("zenburn-yellow"   . "#F0DFAF")
;;     ("zenburn-green-5"  . "#2F4F2F")
;;     ("zenburn-green-4"  . "#3F5F3F")
;;     ("zenburn-green-3"  . "#4F6F4F")
;;     ("zenburn-green-2"  . "#5F7F5F")
;;     ("zenburn-green-1"  . "#6F8F6F")
;;     ("zenburn-green"    . "#7F9F7F")
;;     ("zenburn-green+1"  . "#8FB28F")
;;     ("zenburn-green+2"  . "#9FC59F")
;;     ("zenburn-green+3"  . "#AFD8AF")
;;     ("zenburn-green+4"  . "#BFEBBF")
;;     ("zenburn-cyan"     . "#93E0E3")
;;     ("zenburn-blue+3"   . "#BDE0F3")
;;     ("zenburn-blue+2"   . "#ACE0E3")
;;     ("zenburn-blue+1"   . "#94BFF3")
;;     ("zenburn-blue"     . "#8CD0D3")
;;     ("zenburn-blue-1"   . "#7CB8BB")
;;     ("zenburn-blue-2"   . "#6CA0A3")
;;     ("zenburn-blue-3"   . "#5C888B")
;;     ("zenburn-blue-4"   . "#4C7073")
;;     ("zenburn-blue-5"   . "#366060")
;;     ("zenburn-magenta"  . "#DC8CC3"))
;;   "List of Zenburn colors.
;; Each element has the form (NAME . HEX).

;; `+N' suffixes indicate a color is lighter.
;; `-N' suffixes indicate a color is darker.")

;; (defmacro zenburn-with-color-variables (&rest body)
;;   "`let' bind all colors defined in `zenburn-colors-alist' around BODY.
;; Also bind `class' to ((class color) (min-colors 89))."
;;   (declare (indent 0))
;;   `(let ((class '((class color) (min-colors 89)))
;;          ,@(mapcar (lambda (cons)
;;                      (list (intern (car cons)) (cdr cons)))
;;                    (append zenburn-default-colors-alist
;;                            zenburn-override-colors-alist))
;;          (z-variable-pitch (if zenburn-use-variable-pitch
;;                                'variable-pitch 'default)))
;;      ,@body))

;; ;;; Theme Faces
;; (zenburn-with-color-variables
;;   (custom-theme-set-faces
;;    'zenburn
;; ;;;; Built-in
;; ;;;;; basic coloring
;;    '(button ((t (:underline t))))
;;    `(link ((t (:foreground ,zenburn-yellow :underline t :weight bold))))
;;    `(link-visited ((t (:foreground ,zenburn-yellow-2 :underline t :weight normal))))
;;    `(default ((t (:foreground ,zenburn-fg :background ,zenburn-bg))))
;;    `(cursor ((t (:foreground ,zenburn-fg :background ,zenburn-fg+1))))
;;    `(widget-field ((t (:foreground ,zenburn-fg :background ,zenburn-bg+3))))
;;    `(escape-glyph ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(fringe ((t (:foreground ,zenburn-fg :background ,zenburn-bg+1))))
;;    `(header-line ((t (:foreground ,zenburn-yellow
;;                                   :background ,zenburn-bg-1
;;                                   :box (:line-width -1 :style released-button)
;;                                   :extend t))))
;;    `(highlight ((t (:background ,zenburn-bg-05))))
;;    `(success ((t (:foreground ,zenburn-green :weight bold))))
;;    `(warning ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(tooltip ((t (:foreground ,zenburn-fg :background ,zenburn-bg+1))))
;; ;;;;; compilation
;;    `(compilation-column-face ((t (:foreground ,zenburn-yellow))))
;;    `(compilation-enter-directory-face ((t (:foreground ,zenburn-green))))
;;    `(compilation-error-face ((t (:foreground ,zenburn-red-1 :weight bold :underline t))))
;;    `(compilation-face ((t (:foreground ,zenburn-fg))))
;;    `(compilation-info-face ((t (:foreground ,zenburn-blue))))
;;    `(compilation-info ((t (:foreground ,zenburn-green+4 :underline t))))
;;    `(compilation-leave-directory-face ((t (:foreground ,zenburn-green))))
;;    `(compilation-line-face ((t (:foreground ,zenburn-yellow))))
;;    `(compilation-line-number ((t (:foreground ,zenburn-yellow))))
;;    `(compilation-message-face ((t (:foreground ,zenburn-blue))))
;;    `(compilation-warning-face ((t (:foreground ,zenburn-orange :weight bold :underline t))))
;;    `(compilation-mode-line-exit ((t (:foreground ,zenburn-green+2 :weight bold))))
;;    `(compilation-mode-line-fail ((t (:foreground ,zenburn-red :weight bold))))
;;    `(compilation-mode-line-run ((t (:foreground ,zenburn-yellow :weight bold))))
;; ;;;;; completions
;;    `(completions-annotations ((t (:foreground ,zenburn-fg-1))))
;; ;;;;; customize
;;    `(custom-variable-tag ((t (:foreground ,zenburn-blue :weight bold))))
;;    `(custom-group-tag ((t (:foreground ,zenburn-blue :weight bold :height 1.2))))
;;    `(custom-state ((t (:foreground ,zenburn-green+4))))
;; ;;;;; display-fill-column-indicator
;;    `(fill-column-indicator ((,class :foreground ,zenburn-bg-05 :weight semilight)))
;; ;;;;; eww
;;    '(eww-invalid-certificate ((t (:inherit error))))
;;    '(eww-valid-certificate   ((t (:inherit success))))
;; ;;;;; grep
;;    `(grep-context-face ((t (:foreground ,zenburn-fg))))
;;    `(grep-error-face ((t (:foreground ,zenburn-red-1 :weight bold :underline t))))
;;    `(grep-hit-face ((t (:foreground ,zenburn-blue))))
;;    `(grep-match-face ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(match ((t (:background ,zenburn-bg-1 :foreground ,zenburn-orange :weight bold))))
;; ;;;;; hi-lock
;;    `(hi-blue    ((t (:background ,zenburn-cyan    :foreground ,zenburn-bg-1))))
;;    `(hi-green   ((t (:background ,zenburn-green+4 :foreground ,zenburn-bg-1))))
;;    `(hi-pink    ((t (:background ,zenburn-magenta :foreground ,zenburn-bg-1))))
;;    `(hi-yellow  ((t (:background ,zenburn-yellow  :foreground ,zenburn-bg-1))))
;;    `(hi-blue-b  ((t (:foreground ,zenburn-blue    :weight     bold))))
;;    `(hi-green-b ((t (:foreground ,zenburn-green+2 :weight     bold))))
;;    `(hi-red-b   ((t (:foreground ,zenburn-red     :weight     bold))))
;; ;;;;; info
;;    `(Info-quoted ((t (:inherit font-lock-constant-face))))
;; ;;;;; isearch
;;    `(isearch ((t (:foreground ,zenburn-yellow-2 :weight bold :background ,zenburn-bg+2))))
;;    `(isearch-fail ((t (:foreground ,zenburn-fg :background ,zenburn-red-4))))
;;    `(lazy-highlight ((t (:foreground ,zenburn-yellow-2 :weight bold :background ,zenburn-bg-05))))

;;    `(menu ((t (:foreground ,zenburn-fg :background ,zenburn-bg))))
;;    `(minibuffer-prompt ((t (:foreground ,zenburn-yellow))))
;;    `(mode-line
;;      ((,class (:foreground ,zenburn-green+1
;;                            :background ,zenburn-bg-1
;;                            :box (:line-width -1 :style released-button)))
;;       (t :inverse-video t)))
;;    `(mode-line-buffer-id ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(mode-line-inactive
;;      ((t (:foreground ,zenburn-green-2
;;                       :background ,zenburn-bg-05
;;                       :box (:line-width -1 :style released-button)))))
;;    `(region ((,class (:background ,zenburn-bg-1 :extend t))
;;              (t :inverse-video t)))
;;    `(secondary-selection ((t (:background ,zenburn-bg+2))))
;;    `(trailing-whitespace ((t (:background ,zenburn-red))))
;;    `(vertical-border ((t (:foreground ,zenburn-fg))))
;; ;;;;; font lock
;;    `(font-lock-builtin-face ((t (:foreground ,zenburn-fg :weight bold))))
;;    `(font-lock-comment-face ((t (:foreground ,zenburn-green))))
;;    `(font-lock-comment-delimiter-face ((t (:foreground ,zenburn-green-2))))
;;    `(font-lock-constant-face ((t (:foreground ,zenburn-green+4))))
;;    `(font-lock-doc-face ((t (:foreground ,zenburn-green+2))))
;;    `(font-lock-function-name-face ((t (:foreground ,zenburn-cyan))))
;;    `(font-lock-keyword-face ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(font-lock-negation-char-face ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(font-lock-preprocessor-face ((t (:foreground ,zenburn-blue+1))))
;;    `(font-lock-regexp-grouping-construct ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(font-lock-regexp-grouping-backslash ((t (:foreground ,zenburn-green :weight bold))))
;;    `(font-lock-string-face ((t (:foreground ,zenburn-red))))
;;    `(font-lock-type-face ((t (:foreground ,zenburn-blue-1))))
;;    `(font-lock-variable-name-face ((t (:foreground ,zenburn-orange))))
;;    `(font-lock-warning-face ((t (:foreground ,zenburn-yellow-2 :weight bold))))

;;    `(c-annotation-face ((t (:inherit font-lock-constant-face))))
;; ;;;;; line numbers (Emacs 26.1 and above)
;;    `(line-number ((t (:foreground ,zenburn-bg+3 :background ,zenburn-bg-05))))
;;    `(line-number-current-line ((t (:inherit line-number :foreground ,zenburn-yellow-2))))
;; ;;;;; man
;;    '(Man-overstrike ((t (:inherit font-lock-keyword-face))))
;;    '(Man-underline  ((t (:inherit (font-lock-string-face underline)))))
;; ;;;;; newsticker
;;    `(newsticker-date-face ((t (:foreground ,zenburn-fg))))
;;    `(newsticker-default-face ((t (:foreground ,zenburn-fg))))
;;    `(newsticker-enclosure-face ((t (:foreground ,zenburn-green+3))))
;;    `(newsticker-extra-face ((t (:foreground ,zenburn-bg+2 :height 0.8))))
;;    `(newsticker-feed-face ((t (:foreground ,zenburn-fg))))
;;    `(newsticker-immortal-item-face ((t (:foreground ,zenburn-green))))
;;    `(newsticker-new-item-face ((t (:foreground ,zenburn-blue))))
;;    `(newsticker-obsolete-item-face ((t (:foreground ,zenburn-red))))
;;    `(newsticker-old-item-face ((t (:foreground ,zenburn-bg+3))))
;;    `(newsticker-statistics-face ((t (:foreground ,zenburn-fg))))
;;    `(newsticker-treeview-face ((t (:foreground ,zenburn-fg))))
;;    `(newsticker-treeview-immortal-face ((t (:foreground ,zenburn-green))))
;;    `(newsticker-treeview-listwindow-face ((t (:foreground ,zenburn-fg))))
;;    `(newsticker-treeview-new-face ((t (:foreground ,zenburn-blue :weight bold))))
;;    `(newsticker-treeview-obsolete-face ((t (:foreground ,zenburn-red))))
;;    `(newsticker-treeview-old-face ((t (:foreground ,zenburn-bg+3))))
;;    `(newsticker-treeview-selection-face ((t (:background ,zenburn-bg-1 :foreground ,zenburn-yellow))))
;; ;;;;; woman
;;    '(woman-bold   ((t (:inherit font-lock-keyword-face))))
;;    '(woman-italic ((t (:inherit (font-lock-string-face italic)))))
;; ;;;; Third-party
;; ;;;;; ace-jump
;;    `(ace-jump-face-background
;;      ((t (:foreground ,zenburn-fg-1 :background ,zenburn-bg :inverse-video nil))))
;;    `(ace-jump-face-foreground
;;      ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg :inverse-video nil))))
;; ;;;;; ace-window
;;    `(aw-background-face
;;      ((t (:foreground ,zenburn-fg-1 :background ,zenburn-bg :inverse-video nil))))
;;    `(aw-leading-char-face ((t (:inherit aw-mode-line-face))))
;; ;;;;; android mode
;;    `(android-mode-debug-face ((t (:foreground ,zenburn-green+1))))
;;    `(android-mode-error-face ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(android-mode-info-face ((t (:foreground ,zenburn-fg))))
;;    `(android-mode-verbose-face ((t (:foreground ,zenburn-green))))
;;    `(android-mode-warning-face ((t (:foreground ,zenburn-yellow))))
;; ;;;;; anzu
;;    `(anzu-mode-line ((t (:foreground ,zenburn-cyan :weight bold))))
;;    `(anzu-mode-line-no-match ((t (:foreground ,zenburn-red :weight bold))))
;;    `(anzu-match-1 ((t (:foreground ,zenburn-bg :background ,zenburn-green))))
;;    `(anzu-match-2 ((t (:foreground ,zenburn-bg :background ,zenburn-orange))))
;;    `(anzu-match-3 ((t (:foreground ,zenburn-bg :background ,zenburn-blue))))
;;    `(anzu-replace-to ((t (:inherit anzu-replace-highlight :foreground ,zenburn-yellow))))
;; ;;;;; auctex
;;    `(font-latex-bold-face ((t (:inherit bold))))
;;    `(font-latex-warning-face ((t (:foreground nil :inherit font-lock-warning-face))))
;;    `(font-latex-sectioning-5-face ((t (:foreground ,zenburn-red :weight bold ))))
;;    `(font-latex-sedate-face ((t (:foreground ,zenburn-yellow))))
;;    `(font-latex-italic-face ((t (:foreground ,zenburn-cyan :slant italic))))
;;    `(font-latex-string-face ((t (:inherit ,font-lock-string-face))))
;;    `(font-latex-math-face ((t (:foreground ,zenburn-orange))))
;;    `(font-latex-script-char-face ((t (:foreground ,zenburn-orange))))
;; ;;;;; agda-mode
;;    `(agda2-highlight-keyword-face ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(agda2-highlight-string-face ((t (:foreground ,zenburn-red))))
;;    `(agda2-highlight-symbol-face ((t (:foreground ,zenburn-orange))))
;;    `(agda2-highlight-primitive-type-face ((t (:foreground ,zenburn-blue-1))))
;;    `(agda2-highlight-inductive-constructor-face ((t (:foreground ,zenburn-fg))))
;;    `(agda2-highlight-coinductive-constructor-face ((t (:foreground ,zenburn-fg))))
;;    `(agda2-highlight-datatype-face ((t (:foreground ,zenburn-blue))))
;;    `(agda2-highlight-function-face ((t (:foreground ,zenburn-blue))))
;;    `(agda2-highlight-module-face ((t (:foreground ,zenburn-blue-1))))
;;    `(agda2-highlight-error-face ((t (:foreground ,zenburn-bg :background ,zenburn-magenta))))
;;    `(agda2-highlight-unsolved-meta-face ((t (:foreground ,zenburn-bg :background ,zenburn-magenta))))
;;    `(agda2-highlight-unsolved-constraint-face ((t (:foreground ,zenburn-bg :background ,zenburn-magenta))))
;;    `(agda2-highlight-termination-problem-face ((t (:foreground ,zenburn-bg :background ,zenburn-magenta))))
;;    `(agda2-highlight-incomplete-pattern-face ((t (:foreground ,zenburn-bg :background ,zenburn-magenta))))
;;    `(agda2-highlight-typechecks-face ((t (:background ,zenburn-red-4))))
;; ;;;;; auto-complete
;;    `(ac-candidate-face ((t (:background ,zenburn-bg+3 :foreground ,zenburn-bg-2))))
;;    `(ac-selection-face ((t (:background ,zenburn-blue-4 :foreground ,zenburn-fg))))
;;    `(popup-tip-face ((t (:background ,zenburn-yellow-2 :foreground ,zenburn-bg-2))))
;;    `(popup-menu-mouse-face ((t (:background ,zenburn-yellow-2 :foreground ,zenburn-bg-2))))
;;    `(popup-summary-face ((t (:background ,zenburn-bg+3 :foreground ,zenburn-bg-2))))
;;    `(popup-scroll-bar-foreground-face ((t (:background ,zenburn-blue-5))))
;;    `(popup-scroll-bar-background-face ((t (:background ,zenburn-bg-1))))
;;    `(popup-isearch-match ((t (:background ,zenburn-bg :foreground ,zenburn-fg))))
;; ;;;;; avy
;;    `(avy-background-face
;;      ((t (:foreground ,zenburn-fg-1 :background ,zenburn-bg :inverse-video nil))))
;;    `(avy-lead-face-0
;;      ((t (:foreground ,zenburn-green+3 :background ,zenburn-bg :inverse-video nil :weight bold))))
;;    `(avy-lead-face-1
;;      ((t (:foreground ,zenburn-yellow :background ,zenburn-bg :inverse-video nil :weight bold))))
;;    `(avy-lead-face-2
;;      ((t (:foreground ,zenburn-red+1 :background ,zenburn-bg :inverse-video nil :weight bold))))
;;    `(avy-lead-face
;;      ((t (:foreground ,zenburn-cyan :background ,zenburn-bg :inverse-video nil :weight bold))))
;; ;;;;; company-mode
;;    `(company-tooltip ((t (:foreground ,zenburn-fg :background ,zenburn-bg+1))))
;;    `(company-tooltip-annotation ((t (:foreground ,zenburn-orange :background ,zenburn-bg+1))))
;;    `(company-tooltip-annotation-selection ((t (:foreground ,zenburn-orange :background ,zenburn-bg-1))))
;;    `(company-tooltip-selection ((t (:foreground ,zenburn-fg :background ,zenburn-bg-1))))
;;    `(company-tooltip-mouse ((t (:background ,zenburn-bg-1))))
;;    `(company-tooltip-common ((t (:foreground ,zenburn-green+2))))
;;    `(company-tooltip-common-selection ((t (:foreground ,zenburn-green+2))))
;;    `(company-scrollbar-fg ((t (:background ,zenburn-bg-1))))
;;    `(company-scrollbar-bg ((t (:background ,zenburn-bg+2))))
;;    `(company-preview ((t (:background ,zenburn-green+2))))
;;    `(company-preview-common ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg-1))))
;; ;;;;; bm
;;    `(bm-face ((t (:background ,zenburn-yellow-1 :foreground ,zenburn-bg))))
;;    `(bm-fringe-face ((t (:background ,zenburn-yellow-1 :foreground ,zenburn-bg))))
;;    `(bm-fringe-persistent-face ((t (:background ,zenburn-green-2 :foreground ,zenburn-bg))))
;;    `(bm-persistent-face ((t (:background ,zenburn-green-2 :foreground ,zenburn-bg))))
;; ;;;;; calfw
;;    `(cfw:face-annotation ((t (:foreground ,zenburn-red :inherit cfw:face-day-title))))
;;    `(cfw:face-day-title ((t nil)))
;;    `(cfw:face-default-content ((t (:foreground ,zenburn-green))))
;;    `(cfw:face-default-day ((t (:weight bold))))
;;    `(cfw:face-disable ((t (:foreground ,zenburn-fg-1))))
;;    `(cfw:face-grid ((t (:inherit shadow))))
;;    `(cfw:face-header ((t (:inherit font-lock-keyword-face))))
;;    `(cfw:face-holiday ((t (:inherit cfw:face-sunday))))
;;    `(cfw:face-periods ((t (:foreground ,zenburn-cyan))))
;;    `(cfw:face-saturday ((t (:foreground ,zenburn-blue :weight bold))))
;;    `(cfw:face-select ((t (:background ,zenburn-blue-5))))
;;    `(cfw:face-sunday ((t (:foreground ,zenburn-red :weight bold))))
;;    `(cfw:face-title ((t (:height 2.0 :inherit (variable-pitch font-lock-keyword-face)))))
;;    `(cfw:face-today ((t (:foreground ,zenburn-cyan :weight bold))))
;;    `(cfw:face-today-title ((t (:inherit highlight bold))))
;;    `(cfw:face-toolbar ((t (:background ,zenburn-blue-5))))
;;    `(cfw:face-toolbar-button-off ((t (:underline nil :inherit link))))
;;    `(cfw:face-toolbar-button-on ((t (:underline nil :inherit link-visited))))
;; ;;;;; centaur-tabs
;;    `(centaur-tabs-default ((t (:background ,zenburn-bg :foreground ,zenburn-fg :box nil))))
;;    `(centaur-tabs-selected ((t (:background ,zenburn-bg :foreground ,zenburn-fg+2 :box nil))))
;;    `(centaur-tabs-unselected ((t (:background ,zenburn-bg-1 :foreground ,zenburn-fg-05 :box nil))))
;;    `(centaur-tabs-selected-modified ((t (:background ,zenburn-bg :foreground ,zenburn-orange :box nil))))
;;    `(centaur-tabs-unselected-modified ((t (:background ,zenburn-bg-1 :foreground ,zenburn-orange :box nil))))
;;    `(centaur-tabs-active-bar-face ((t (:background ,zenburn-yellow :box nil))))
;;    `(centaur-tabs-modified-marker-selected ((t (:inherit 'centaur-tabs-selected-modified :foreground ,zenburn-yellow :box nil))))
;;    `(centaur-tabs-modified-marker-unselected ((t (:inherit 'centaur-tabs-unselected-modified :foreground ,zenburn-yellow :box nil))))
;; ;;;;; cider
;;    `(cider-result-overlay-face ((t (:background unspecified))))
;;    `(cider-enlightened-face ((t (:box (:color ,zenburn-orange :line-width -1)))))
;;    `(cider-enlightened-local-face ((t (:weight bold :foreground ,zenburn-green+1))))
;;    `(cider-deprecated-face ((t (:background ,zenburn-yellow-2))))
;;    `(cider-instrumented-face ((t (:box (:color ,zenburn-red :line-width -1)))))
;;    `(cider-traced-face ((t (:box (:color ,zenburn-cyan :line-width -1)))))
;;    `(cider-test-failure-face ((t (:background ,zenburn-red-4))))
;;    `(cider-test-error-face ((t (:background ,zenburn-magenta))))
;;    `(cider-test-success-face ((t (:background ,zenburn-green-2))))
;;    `(cider-fringe-good-face ((t (:foreground ,zenburn-green+4))))
;; ;;;;; circe
;;    `(circe-highlight-nick-face ((t (:foreground ,zenburn-cyan))))
;;    `(circe-my-message-face ((t (:foreground ,zenburn-fg))))
;;    `(circe-fool-face ((t (:foreground ,zenburn-red+1))))
;;    `(circe-topic-diff-removed-face ((t (:foreground ,zenburn-red :weight bold))))
;;    `(circe-originator-face ((t (:foreground ,zenburn-fg))))
;;    `(circe-server-face ((t (:foreground ,zenburn-green))))
;;    `(circe-topic-diff-new-face ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(circe-prompt-face ((t (:foreground ,zenburn-orange :background ,zenburn-bg :weight bold))))
;; ;;;;; context-coloring
;;    `(context-coloring-level-0-face ((t :foreground ,zenburn-fg)))
;;    `(context-coloring-level-1-face ((t :foreground ,zenburn-cyan)))
;;    `(context-coloring-level-2-face ((t :foreground ,zenburn-green+4)))
;;    `(context-coloring-level-3-face ((t :foreground ,zenburn-yellow)))
;;    `(context-coloring-level-4-face ((t :foreground ,zenburn-orange)))
;;    `(context-coloring-level-5-face ((t :foreground ,zenburn-magenta)))
;;    `(context-coloring-level-6-face ((t :foreground ,zenburn-blue+1)))
;;    `(context-coloring-level-7-face ((t :foreground ,zenburn-green+2)))
;;    `(context-coloring-level-8-face ((t :foreground ,zenburn-yellow-2)))
;;    `(context-coloring-level-9-face ((t :foreground ,zenburn-red+1)))
;; ;;;;; coq
;;    `(coq-solve-tactics-face ((t (:foreground nil :inherit font-lock-constant-face))))
;; ;;;;; ctable
;;    `(ctbl:face-cell-select ((t (:background ,zenburn-blue :foreground ,zenburn-bg))))
;;    `(ctbl:face-continue-bar ((t (:background ,zenburn-bg-05 :foreground ,zenburn-bg))))
;;    `(ctbl:face-row-select ((t (:background ,zenburn-cyan :foreground ,zenburn-bg))))
;; ;;;;; debbugs
;;    `(debbugs-gnu-done ((t (:foreground ,zenburn-fg-1))))
;;    `(debbugs-gnu-handled ((t (:foreground ,zenburn-green))))
;;    `(debbugs-gnu-new ((t (:foreground ,zenburn-red))))
;;    `(debbugs-gnu-pending ((t (:foreground ,zenburn-blue))))
;;    `(debbugs-gnu-stale ((t (:foreground ,zenburn-orange))))
;;    `(debbugs-gnu-tagged ((t (:foreground ,zenburn-red))))
;; ;;;;; diff
;;    ;; Please read (info "(magit)Theming Faces") before changing this.
;;    `(diff-added          ((t (:background "#335533" :foreground ,zenburn-green))))
;;    `(diff-changed        ((t (:background "#555511" :foreground ,zenburn-yellow-1))))
;;    `(diff-removed        ((t (:background "#553333" :foreground ,zenburn-red-2))))
;;    `(diff-refine-added   ((t (:background "#338833" :foreground ,zenburn-green+4))))
;;    `(diff-refine-changed ((t (:background "#888811" :foreground ,zenburn-yellow))))
;;    `(diff-refine-removed ((t (:background "#883333" :foreground ,zenburn-red))))
;;    `(diff-header ((,class (:background ,zenburn-bg+2))
;;                   (t (:background ,zenburn-fg :foreground ,zenburn-bg))))
;;    `(diff-file-header
;;      ((,class (:background ,zenburn-bg+2 :foreground ,zenburn-fg :weight bold))
;;       (t (:background ,zenburn-fg :foreground ,zenburn-bg :weight bold))))
;; ;;;;; diff-hl
;;    `(diff-hl-change ((,class (:foreground ,zenburn-blue :background ,zenburn-blue-2))))
;;    `(diff-hl-delete ((,class (:foreground ,zenburn-red+1 :background ,zenburn-red-1))))
;;    `(diff-hl-insert ((,class (:foreground ,zenburn-green+1 :background ,zenburn-green-2))))
;; ;;;;; dim-autoload
;;    `(dim-autoload-cookie-line ((t :foreground ,zenburn-bg+1)))
;; ;;;;; dired+
;;    `(diredp-display-msg ((t (:foreground ,zenburn-blue))))
;;    `(diredp-compressed-file-suffix ((t (:foreground ,zenburn-orange))))
;;    `(diredp-date-time ((t (:foreground ,zenburn-magenta))))
;;    `(diredp-deletion ((t (:foreground ,zenburn-yellow))))
;;    `(diredp-deletion-file-name ((t (:foreground ,zenburn-red))))
;;    `(diredp-dir-heading ((t (:foreground ,zenburn-blue :background ,zenburn-bg-1))))
;;    `(diredp-dir-priv ((t (:foreground ,zenburn-cyan))))
;;    `(diredp-exec-priv ((t (:foreground ,zenburn-red))))
;;    `(diredp-executable-tag ((t (:foreground ,zenburn-green+1))))
;;    `(diredp-file-name ((t (:foreground ,zenburn-blue))))
;;    `(diredp-file-suffix ((t (:foreground ,zenburn-green))))
;;    `(diredp-flag-mark ((t (:foreground ,zenburn-yellow))))
;;    `(diredp-flag-mark-line ((t (:foreground ,zenburn-orange))))
;;    `(diredp-ignored-file-name ((t (:foreground ,zenburn-red))))
;;    `(diredp-link-priv ((t (:foreground ,zenburn-yellow))))
;;    `(diredp-mode-line-flagged ((t (:foreground ,zenburn-yellow))))
;;    `(diredp-mode-line-marked ((t (:foreground ,zenburn-orange))))
;;    `(diredp-no-priv ((t (:foreground ,zenburn-fg))))
;;    `(diredp-number ((t (:foreground ,zenburn-green+1))))
;;    `(diredp-other-priv ((t (:foreground ,zenburn-yellow-1))))
;;    `(diredp-rare-priv ((t (:foreground ,zenburn-red-1))))
;;    `(diredp-read-priv ((t (:foreground ,zenburn-green-2))))
;;    `(diredp-symlink ((t (:foreground ,zenburn-yellow))))
;;    `(diredp-write-priv ((t (:foreground ,zenburn-magenta))))
;; ;;;;; dired-async
;;    `(dired-async-failures ((t (:foreground ,zenburn-red :weight bold))))
;;    `(dired-async-message ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(dired-async-mode-message ((t (:foreground ,zenburn-yellow))))
;; ;;;;; diredfl
;;    `(diredfl-compressed-file-suffix ((t (:foreground ,zenburn-orange))))
;;    `(diredfl-date-time ((t (:foreground ,zenburn-magenta))))
;;    `(diredfl-deletion ((t (:foreground ,zenburn-yellow))))
;;    `(diredfl-deletion-file-name ((t (:foreground ,zenburn-red))))
;;    `(diredfl-dir-heading ((t (:foreground ,zenburn-blue :background ,zenburn-bg-1))))
;;    `(diredfl-dir-priv ((t (:foreground ,zenburn-cyan))))
;;    `(diredfl-exec-priv ((t (:foreground ,zenburn-red))))
;;    `(diredfl-executable-tag ((t (:foreground ,zenburn-green+1))))
;;    `(diredfl-file-name ((t (:foreground ,zenburn-blue))))
;;    `(diredfl-file-suffix ((t (:foreground ,zenburn-green))))
;;    `(diredfl-flag-mark ((t (:foreground ,zenburn-yellow))))
;;    `(diredfl-flag-mark-line ((t (:foreground ,zenburn-orange))))
;;    `(diredfl-ignored-file-name ((t (:foreground ,zenburn-red))))
;;    `(diredfl-link-priv ((t (:foreground ,zenburn-yellow))))
;;    `(diredfl-no-priv ((t (:foreground ,zenburn-fg))))
;;    `(diredfl-number ((t (:foreground ,zenburn-green+1))))
;;    `(diredfl-other-priv ((t (:foreground ,zenburn-yellow-1))))
;;    `(diredfl-rare-priv ((t (:foreground ,zenburn-red-1))))
;;    `(diredfl-read-priv ((t (:foreground ,zenburn-green-1))))
;;    `(diredfl-symlink ((t (:foreground ,zenburn-yellow))))
;;    `(diredfl-write-priv ((t (:foreground ,zenburn-magenta))))
;; ;;;;; doom-modeline
;;    `(doom-modeline-bar  ((t (:background ,zenburn-yellow))))
;;    `(doom-modeline-inactive-bar  ((t (:background nil))))
;; ;;;;; ediff
;;    `(ediff-current-diff-A ((t (:foreground ,zenburn-fg :background ,zenburn-red-4))))
;;    `(ediff-current-diff-Ancestor ((t (:foreground ,zenburn-fg :background ,zenburn-red-4))))
;;    `(ediff-current-diff-B ((t (:foreground ,zenburn-fg :background ,zenburn-green-2))))
;;    `(ediff-current-diff-C ((t (:foreground ,zenburn-fg :background ,zenburn-blue-5))))
;;    `(ediff-even-diff-A ((t (:background ,zenburn-bg+1))))
;;    `(ediff-even-diff-Ancestor ((t (:background ,zenburn-bg+1))))
;;    `(ediff-even-diff-B ((t (:background ,zenburn-bg+1))))
;;    `(ediff-even-diff-C ((t (:background ,zenburn-bg+1))))
;;    `(ediff-fine-diff-A ((t (:foreground ,zenburn-fg :background ,zenburn-red-2 :weight bold))))
;;    `(ediff-fine-diff-Ancestor ((t (:foreground ,zenburn-fg :background ,zenburn-red-2 weight bold))))
;;    `(ediff-fine-diff-B ((t (:foreground ,zenburn-fg :background ,zenburn-green :weight bold))))
;;    `(ediff-fine-diff-C ((t (:foreground ,zenburn-fg :background ,zenburn-blue-3 :weight bold ))))
;;    `(ediff-odd-diff-A ((t (:background ,zenburn-bg+2))))
;;    `(ediff-odd-diff-Ancestor ((t (:background ,zenburn-bg+2))))
;;    `(ediff-odd-diff-B ((t (:background ,zenburn-bg+2))))
;;    `(ediff-odd-diff-C ((t (:background ,zenburn-bg+2))))
;; ;;;;; egg
;;    `(egg-text-base ((t (:foreground ,zenburn-fg))))
;;    `(egg-help-header-1 ((t (:foreground ,zenburn-yellow))))
;;    `(egg-help-header-2 ((t (:foreground ,zenburn-green+3))))
;;    `(egg-branch ((t (:foreground ,zenburn-yellow))))
;;    `(egg-branch-mono ((t (:foreground ,zenburn-yellow))))
;;    `(egg-term ((t (:foreground ,zenburn-yellow))))
;;    `(egg-diff-add ((t (:foreground ,zenburn-green+4))))
;;    `(egg-diff-del ((t (:foreground ,zenburn-red+1))))
;;    `(egg-diff-file-header ((t (:foreground ,zenburn-yellow-2))))
;;    `(egg-section-title ((t (:foreground ,zenburn-yellow))))
;;    `(egg-stash-mono ((t (:foreground ,zenburn-green+4))))
;; ;;;;; elfeed
;;    `(elfeed-log-error-level-face ((t (:foreground ,zenburn-red))))
;;    `(elfeed-log-info-level-face ((t (:foreground ,zenburn-blue))))
;;    `(elfeed-log-warn-level-face ((t (:foreground ,zenburn-yellow))))
;;    `(elfeed-search-date-face ((t (:foreground ,zenburn-yellow-1 :underline t
;;                                               :weight bold))))
;;    `(elfeed-search-tag-face ((t (:foreground ,zenburn-green))))
;;    `(elfeed-search-feed-face ((t (:foreground ,zenburn-cyan))))
;;    `(elfeed-search-title-face ((t (:foreground ,zenburn-fg-05))))
;;    `(elfeed-search-unread-title-face ((t (:foreground ,zenburn-fg :weight bold))))
;; ;;;;; emacs-w3m
;;    `(w3m-anchor ((t (:foreground ,zenburn-yellow :underline t
;;                                  :weight bold))))
;;    `(w3m-arrived-anchor ((t (:foreground ,zenburn-yellow-2
;;                                          :underline t :weight normal))))
;;    `(w3m-form ((t (:foreground ,zenburn-red-1 :underline t))))
;;    `(w3m-header-line-location-title ((t (:foreground ,zenburn-yellow
;;                                                      :underline t :weight bold))))
;;    '(w3m-history-current-url ((t (:inherit match))))
;;    `(w3m-lnum ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg))))
;;    `(w3m-lnum-match ((t (:background ,zenburn-bg-1
;;                                      :foreground ,zenburn-orange
;;                                      :weight bold))))
;;    `(w3m-lnum-minibuffer-prompt ((t (:foreground ,zenburn-yellow))))
;; ;;;;; erc
;;    `(erc-action-face ((t (:inherit erc-default-face))))
;;    `(erc-bold-face ((t (:weight bold))))
;;    `(erc-current-nick-face ((t (:foreground ,zenburn-blue :weight bold))))
;;    `(erc-dangerous-host-face ((t (:inherit font-lock-warning-face))))
;;    `(erc-default-face ((t (:foreground ,zenburn-fg))))
;;    `(erc-direct-msg-face ((t (:inherit erc-default-face))))
;;    `(erc-error-face ((t (:inherit font-lock-warning-face))))
;;    `(erc-fool-face ((t (:inherit erc-default-face))))
;;    `(erc-highlight-face ((t (:inherit hover-highlight))))
;;    `(erc-input-face ((t (:foreground ,zenburn-yellow))))
;;    `(erc-keyword-face ((t (:foreground ,zenburn-blue :weight bold))))
;;    `(erc-nick-default-face ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(erc-my-nick-face ((t (:foreground ,zenburn-red :weight bold))))
;;    `(erc-nick-msg-face ((t (:inherit erc-default-face))))
;;    `(erc-notice-face ((t (:foreground ,zenburn-green))))
;;    `(erc-pal-face ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(erc-prompt-face ((t (:foreground ,zenburn-orange :background ,zenburn-bg :weight bold))))
;;    `(erc-timestamp-face ((t (:foreground ,zenburn-green+4))))
;;    `(erc-underline-face ((t (:underline t))))
;; ;;;;; eros
;;    `(eros-result-overlay-face ((t (:background unspecified))))
;; ;;;;; ert
;;    `(ert-test-result-expected ((t (:foreground ,zenburn-green+4 :background ,zenburn-bg))))
;;    `(ert-test-result-unexpected ((t (:foreground ,zenburn-red :background ,zenburn-bg))))
;; ;;;;; eshell
;;    `(eshell-prompt ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(eshell-ls-archive ((t (:foreground ,zenburn-red-1 :weight bold))))
;;    `(eshell-ls-backup ((t (:inherit font-lock-comment-face))))
;;    `(eshell-ls-clutter ((t (:inherit font-lock-comment-face))))
;;    `(eshell-ls-directory ((t (:foreground ,zenburn-blue+1 :weight bold))))
;;    `(eshell-ls-executable ((t (:foreground ,zenburn-red+1 :weight bold))))
;;    `(eshell-ls-unreadable ((t (:foreground ,zenburn-fg))))
;;    `(eshell-ls-missing ((t (:inherit font-lock-warning-face))))
;;    `(eshell-ls-product ((t (:inherit font-lock-doc-face))))
;;    `(eshell-ls-special ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(eshell-ls-symlink ((t (:foreground ,zenburn-cyan :weight bold))))
;; ;;;;; flx
;;    `(flx-highlight-face ((t (:foreground ,zenburn-green+2 :weight bold))))
;; ;;;;; flycheck
;;    `(flycheck-error
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-red-1) :inherit unspecified))
;;       (t (:foreground ,zenburn-red-1 :weight bold :underline t))))
;;    `(flycheck-warning
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-yellow) :inherit unspecified))
;;       (t (:foreground ,zenburn-yellow :weight bold :underline t))))
;;    `(flycheck-info
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-cyan) :inherit unspecified))
;;       (t (:foreground ,zenburn-cyan :weight bold :underline t))))
;;    `(flycheck-fringe-error ((t (:foreground ,zenburn-red-1 :weight bold))))
;;    `(flycheck-fringe-warning ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(flycheck-fringe-info ((t (:foreground ,zenburn-cyan :weight bold))))
;; ;;;;; flymake
;;    `(flymake-errline
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-red)
;;                    :inherit unspecified :foreground unspecified :background unspecified))
;;       (t (:foreground ,zenburn-red-1 :weight bold :underline t))))
;;    `(flymake-warnline
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-orange)
;;                    :inherit unspecified :foreground unspecified :background unspecified))
;;       (t (:foreground ,zenburn-orange :weight bold :underline t))))
;;    `(flymake-infoline
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-green)
;;                    :inherit unspecified :foreground unspecified :background unspecified))
;;       (t (:foreground ,zenburn-green-2 :weight bold :underline t))))
;; ;;;;; flyspell
;;    `(flyspell-duplicate
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-orange) :inherit unspecified))
;;       (t (:foreground ,zenburn-orange :weight bold :underline t))))
;;    `(flyspell-incorrect
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-red) :inherit unspecified))
;;       (t (:foreground ,zenburn-red-1 :weight bold :underline t))))
;; ;;;;; full-ack
;;    `(ack-separator ((t (:foreground ,zenburn-fg))))
;;    `(ack-file ((t (:foreground ,zenburn-blue))))
;;    `(ack-line ((t (:foreground ,zenburn-yellow))))
;;    `(ack-match ((t (:foreground ,zenburn-orange :background ,zenburn-bg-1 :weight bold))))
;; ;;;;; git-annex
;;    '(git-annex-dired-annexed-available ((t (:inherit success :weight normal))))
;;    '(git-annex-dired-annexed-unavailable ((t (:inherit error :weight normal))))
;; ;;;;; git-commit
;;    `(git-commit-comment-action  ((,class (:foreground ,zenburn-green+1 :weight bold))))
;;    `(git-commit-comment-branch  ((,class (:foreground ,zenburn-blue+1  :weight bold)))) ; obsolete
;;    `(git-commit-comment-branch-local  ((,class (:foreground ,zenburn-blue+1  :weight bold))))
;;    `(git-commit-comment-branch-remote ((,class (:foreground ,zenburn-green  :weight bold))))
;;    `(git-commit-comment-heading ((,class (:foreground ,zenburn-yellow  :weight bold))))
;; ;;;;; git-gutter
;;    `(git-gutter:added ((t (:foreground ,zenburn-green :weight bold :inverse-video t))))
;;    `(git-gutter:deleted ((t (:foreground ,zenburn-red :weight bold :inverse-video t))))
;;    `(git-gutter:modified ((t (:foreground ,zenburn-magenta :weight bold :inverse-video t))))
;;    `(git-gutter:unchanged ((t (:foreground ,zenburn-fg :weight bold :inverse-video t))))
;; ;;;;; git-gutter-fr
;;    `(git-gutter-fr:added ((t (:foreground ,zenburn-green  :weight bold))))
;;    `(git-gutter-fr:deleted ((t (:foreground ,zenburn-red :weight bold))))
;;    `(git-gutter-fr:modified ((t (:foreground ,zenburn-magenta :weight bold))))
;; ;;;;; git-rebase
;;    `(git-rebase-hash ((t (:foreground, zenburn-orange))))
;; ;;;;; gnus
;;    `(gnus-group-mail-1 ((t (:weight bold :inherit gnus-group-mail-1-empty))))
;;    `(gnus-group-mail-1-empty ((t (:inherit gnus-group-news-1-empty))))
;;    `(gnus-group-mail-2 ((t (:weight bold :inherit gnus-group-mail-2-empty))))
;;    `(gnus-group-mail-2-empty ((t (:inherit gnus-group-news-2-empty))))
;;    `(gnus-group-mail-3 ((t (:weight bold :inherit gnus-group-mail-3-empty))))
;;    `(gnus-group-mail-3-empty ((t (:inherit gnus-group-news-3-empty))))
;;    `(gnus-group-mail-4 ((t (:weight bold :inherit gnus-group-mail-4-empty))))
;;    `(gnus-group-mail-4-empty ((t (:inherit gnus-group-news-4-empty))))
;;    `(gnus-group-mail-5 ((t (:weight bold :inherit gnus-group-mail-5-empty))))
;;    `(gnus-group-mail-5-empty ((t (:inherit gnus-group-news-5-empty))))
;;    `(gnus-group-mail-6 ((t (:weight bold :inherit gnus-group-mail-6-empty))))
;;    `(gnus-group-mail-6-empty ((t (:inherit gnus-group-news-6-empty))))
;;    `(gnus-group-mail-low ((t (:weight bold :inherit gnus-group-mail-low-empty))))
;;    `(gnus-group-mail-low-empty ((t (:inherit gnus-group-news-low-empty))))
;;    `(gnus-group-news-1 ((t (:weight bold :inherit gnus-group-news-1-empty))))
;;    `(gnus-group-news-2 ((t (:weight bold :inherit gnus-group-news-2-empty))))
;;    `(gnus-group-news-3 ((t (:weight bold :inherit gnus-group-news-3-empty))))
;;    `(gnus-group-news-4 ((t (:weight bold :inherit gnus-group-news-4-empty))))
;;    `(gnus-group-news-5 ((t (:weight bold :inherit gnus-group-news-5-empty))))
;;    `(gnus-group-news-6 ((t (:weight bold :inherit gnus-group-news-6-empty))))
;;    `(gnus-group-news-low ((t (:weight bold :inherit gnus-group-news-low-empty))))
;;    `(gnus-header-content ((t (:inherit message-header-other))))
;;    `(gnus-header-from ((t (:inherit message-header-to))))
;;    `(gnus-header-name ((t (:inherit message-header-name))))
;;    `(gnus-header-newsgroups ((t (:inherit message-header-other))))
;;    `(gnus-header-subject ((t (:inherit message-header-subject))))
;;    `(gnus-server-opened ((t (:foreground ,zenburn-green+2 :weight bold))))
;;    `(gnus-server-denied ((t (:foreground ,zenburn-red+1 :weight bold))))
;;    `(gnus-server-closed ((t (:foreground ,zenburn-blue :slant italic))))
;;    `(gnus-server-offline ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(gnus-server-agent ((t (:foreground ,zenburn-blue :weight bold))))
;;    `(gnus-summary-cancelled ((t (:foreground ,zenburn-orange))))
;;    `(gnus-summary-high-ancient ((t (:foreground ,zenburn-blue))))
;;    `(gnus-summary-high-read ((t (:foreground ,zenburn-green :weight bold))))
;;    `(gnus-summary-high-ticked ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(gnus-summary-high-unread ((t (:foreground ,zenburn-fg :weight bold))))
;;    `(gnus-summary-low-ancient ((t (:foreground ,zenburn-blue))))
;;    `(gnus-summary-low-read ((t (:foreground ,zenburn-green))))
;;    `(gnus-summary-low-ticked ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(gnus-summary-low-unread ((t (:foreground ,zenburn-fg))))
;;    `(gnus-summary-normal-ancient ((t (:foreground ,zenburn-blue))))
;;    `(gnus-summary-normal-read ((t (:foreground ,zenburn-green))))
;;    `(gnus-summary-normal-ticked ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(gnus-summary-normal-unread ((t (:foreground ,zenburn-fg))))
;;    `(gnus-summary-selected ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(gnus-cite-1 ((t (:foreground ,zenburn-blue))))
;;    `(gnus-cite-10 ((t (:foreground ,zenburn-yellow-1))))
;;    `(gnus-cite-11 ((t (:foreground ,zenburn-yellow))))
;;    `(gnus-cite-2 ((t (:foreground ,zenburn-blue-1))))
;;    `(gnus-cite-3 ((t (:foreground ,zenburn-blue-2))))
;;    `(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-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 (:foreground ,zenburn-bg+2))))
;;    `(gnus-group-news-low-empty ((t (:foreground ,zenburn-bg+2))))
;;    `(gnus-signature ((t (:foreground ,zenburn-yellow))))
;;    `(gnus-x ((t (:background ,zenburn-fg :foreground ,zenburn-bg))))
;;    `(mm-uu-extract ((t (:background ,zenburn-bg-05 :foreground ,zenburn-green+1))))
;; ;;;;; go-guru
;;    `(go-guru-hl-identifier-face ((t (:foreground ,zenburn-bg-1 :background ,zenburn-green+1))))
;; ;;;;; guide-key
;;    `(guide-key/highlight-command-face ((t (:foreground ,zenburn-blue))))
;;    `(guide-key/key-face ((t (:foreground ,zenburn-green))))
;;    `(guide-key/prefix-command-face ((t (:foreground ,zenburn-green+1))))
;; ;;;;; hackernews
;;    '(hackernews-comment-count ((t (:inherit link-visited :underline nil))))
;;    '(hackernews-link          ((t (:inherit link         :underline nil))))
;; ;;;;; helm
;;    `(helm-header
;;      ((t (:foreground ,zenburn-green
;;                       :background ,zenburn-bg
;;                       :underline nil
;;                       :box nil
;;                       :extend t))))
;;    `(helm-source-header
;;      ((t (:foreground ,zenburn-yellow
;;                       :background ,zenburn-bg-1
;;                       :underline nil
;;                       :weight bold
;;                       :box (:line-width -1 :style released-button)
;;                       :extend t))))
;;    `(helm-selection ((t (:background ,zenburn-bg+1 :underline nil))))
;;    `(helm-selection-line ((t (:background ,zenburn-bg+1))))
;;    `(helm-visible-mark ((t (:foreground ,zenburn-bg :background ,zenburn-yellow-2))))
;;    `(helm-candidate-number ((t (:foreground ,zenburn-green+4 :background ,zenburn-bg-1))))
;;    `(helm-separator ((t (:foreground ,zenburn-red :background ,zenburn-bg))))
;;    `(helm-time-zone-current ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg))))
;;    `(helm-time-zone-home ((t (:foreground ,zenburn-red :background ,zenburn-bg))))
;;    `(helm-bookmark-addressbook ((t (:foreground ,zenburn-orange :background ,zenburn-bg))))
;;    `(helm-bookmark-directory ((t (:foreground nil :background nil :inherit helm-ff-directory))))
;;    `(helm-bookmark-file ((t (:foreground nil :background nil :inherit helm-ff-file))))
;;    `(helm-bookmark-gnus ((t (:foreground ,zenburn-magenta :background ,zenburn-bg))))
;;    `(helm-bookmark-info ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg))))
;;    `(helm-bookmark-man ((t (:foreground ,zenburn-yellow :background ,zenburn-bg))))
;;    `(helm-bookmark-w3m ((t (:foreground ,zenburn-magenta :background ,zenburn-bg))))
;;    `(helm-buffer-not-saved ((t (:foreground ,zenburn-red :background ,zenburn-bg))))
;;    `(helm-buffer-process ((t (:foreground ,zenburn-cyan :background ,zenburn-bg))))
;;    `(helm-buffer-saved-out ((t (:foreground ,zenburn-fg :background ,zenburn-bg))))
;;    `(helm-buffer-size ((t (:foreground ,zenburn-fg-1 :background ,zenburn-bg))))
;;    `(helm-ff-directory ((t (:foreground ,zenburn-cyan :background ,zenburn-bg :weight bold))))
;;    `(helm-ff-file ((t (:foreground ,zenburn-fg :background ,zenburn-bg :weight normal))))
;;    `(helm-ff-executable ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg :weight normal))))
;;    `(helm-ff-invalid-symlink ((t (:foreground ,zenburn-red :background ,zenburn-bg :weight bold))))
;;    `(helm-ff-symlink ((t (:foreground ,zenburn-yellow :background ,zenburn-bg :weight bold))))
;;    `(helm-ff-prefix ((t (:foreground ,zenburn-bg :background ,zenburn-yellow :weight normal))))
;;    `(helm-grep-cmd-line ((t (:foreground ,zenburn-cyan :background ,zenburn-bg))))
;;    `(helm-grep-file ((t (:foreground ,zenburn-fg :background ,zenburn-bg))))
;;    `(helm-grep-finish ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg))))
;;    `(helm-grep-lineno ((t (:foreground ,zenburn-fg-1 :background ,zenburn-bg))))
;;    `(helm-grep-match ((t (:foreground nil :background nil :inherit helm-match))))
;;    `(helm-grep-running ((t (:foreground ,zenburn-red :background ,zenburn-bg))))
;;    `(helm-match ((t (:foreground ,zenburn-orange :background ,zenburn-bg-1 :weight bold))))
;;    `(helm-moccur-buffer ((t (:foreground ,zenburn-cyan :background ,zenburn-bg))))
;;    `(helm-mu-contacts-address-face ((t (:foreground ,zenburn-fg-1 :background ,zenburn-bg))))
;;    `(helm-mu-contacts-name-face ((t (:foreground ,zenburn-fg :background ,zenburn-bg))))
;; ;;;;; helm-lxc
;;    `(helm-lxc-face-frozen ((t (:foreground ,zenburn-blue :background ,zenburn-bg))))
;;    `(helm-lxc-face-running ((t (:foreground ,zenburn-green :background ,zenburn-bg))))
;;    `(helm-lxc-face-stopped ((t (:foreground ,zenburn-red :background ,zenburn-bg))))
;; ;;;;; helm-swoop
;;    `(helm-swoop-target-line-face ((t (:foreground ,zenburn-fg :background ,zenburn-bg+1))))
;;    `(helm-swoop-target-word-face ((t (:foreground ,zenburn-yellow :background ,zenburn-bg+2 :weight bold))))
;; ;;;;; highlight-numbers
;;    `(highlight-numbers-number ((t (:foreground ,zenburn-blue))))
;; ;;;;; highlight-symbol
;;    `(highlight-symbol-face ((t (:background ,zenburn-bg+2))))
;; ;;;;; highlight-thing
;;    `(highlight-thing ((t (:background ,zenburn-bg+2))))
;; ;;;;; hl-line-mode
;;    `(hl-line-face ((,class (:background ,zenburn-bg-05))
;;                    (t :weight bold)))
;;    `(hl-line ((,class (:background ,zenburn-bg-05 :extend t)) ; old emacsen
;;               (t :weight bold)))
;; ;;;;; hl-sexp
;;    `(hl-sexp-face ((,class (:background ,zenburn-bg+1))
;;                    (t :weight bold)))
;; ;;;;; hydra
;;    `(hydra-face-red ((t (:foreground ,zenburn-red-1 :background ,zenburn-bg))))
;;    `(hydra-face-amaranth ((t (:foreground ,zenburn-red-3 :background ,zenburn-bg))))
;;    `(hydra-face-blue ((t (:foreground ,zenburn-blue :background ,zenburn-bg))))
;;    `(hydra-face-pink ((t (:foreground ,zenburn-magenta :background ,zenburn-bg))))
;;    `(hydra-face-teal ((t (:foreground ,zenburn-cyan :background ,zenburn-bg))))
;; ;;;;; info+
;;    `(info-command-ref-item ((t (:background ,zenburn-bg-1 :foreground ,zenburn-orange))))
;;    `(info-constant-ref-item ((t (:background ,zenburn-bg-1 :foreground ,zenburn-magenta))))
;;    `(info-double-quoted-name ((t (:inherit font-lock-comment-face))))
;;    `(info-file ((t (:background ,zenburn-bg-1 :foreground ,zenburn-yellow))))
;;    `(info-function-ref-item ((t (:background ,zenburn-bg-1 :inherit font-lock-function-name-face))))
;;    `(info-macro-ref-item ((t (:background ,zenburn-bg-1 :foreground ,zenburn-yellow))))
;;    `(info-menu ((t (:foreground ,zenburn-yellow))))
;;    `(info-quoted-name ((t (:inherit font-lock-constant-face))))
;;    `(info-reference-item ((t (:background ,zenburn-bg-1))))
;;    `(info-single-quote ((t (:inherit font-lock-keyword-face))))
;;    `(info-special-form-ref-item ((t (:background ,zenburn-bg-1 :foreground ,zenburn-yellow))))
;;    `(info-string ((t (:inherit font-lock-string-face))))
;;    `(info-syntax-class-item ((t (:background ,zenburn-bg-1 :foreground ,zenburn-blue+1))))
;;    `(info-user-option-ref-item ((t (:background ,zenburn-bg-1 :foreground ,zenburn-red))))
;;    `(info-variable-ref-item ((t (:background ,zenburn-bg-1 :foreground ,zenburn-orange))))
;; ;;;;; irfc
;;    `(irfc-head-name-face ((t (:foreground ,zenburn-red :weight bold))))
;;    `(irfc-head-number-face ((t (:foreground ,zenburn-red :weight bold))))
;;    `(irfc-reference-face ((t (:foreground ,zenburn-blue-1 :weight bold))))
;;    `(irfc-requirement-keyword-face ((t (:inherit font-lock-keyword-face))))
;;    `(irfc-rfc-link-face ((t (:inherit link))))
;;    `(irfc-rfc-number-face ((t (:foreground ,zenburn-cyan :weight bold))))
;;    `(irfc-std-number-face ((t (:foreground ,zenburn-green+4 :weight bold))))
;;    `(irfc-table-item-face ((t (:foreground ,zenburn-green+3))))
;;    `(irfc-title-face ((t (:foreground ,zenburn-yellow
;;                                       :underline t :weight bold))))
;; ;;;;; ivy
;;    `(ivy-confirm-face ((t (:foreground ,zenburn-green :background ,zenburn-bg))))
;;    `(ivy-current-match ((t (:foreground ,zenburn-yellow :weight bold :underline t))))
;;    `(ivy-cursor ((t (:foreground ,zenburn-bg :background ,zenburn-fg))))
;;    `(ivy-match-required-face ((t (:foreground ,zenburn-red :background ,zenburn-bg))))
;;    `(ivy-minibuffer-match-face-1 ((t (:background ,zenburn-bg+1))))
;;    `(ivy-minibuffer-match-face-2 ((t (:background ,zenburn-green-2))))
;;    `(ivy-minibuffer-match-face-3 ((t (:background ,zenburn-green))))
;;    `(ivy-minibuffer-match-face-4 ((t (:background ,zenburn-green+1))))
;;    `(ivy-remote ((t (:foreground ,zenburn-blue :background ,zenburn-bg))))
;;    `(ivy-subdir ((t (:foreground ,zenburn-yellow :background ,zenburn-bg))))
;; ;;;;; ido-mode
;;    `(ido-first-match ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(ido-only-match ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(ido-subdir ((t (:foreground ,zenburn-yellow))))
;;    `(ido-indicator ((t (:foreground ,zenburn-yellow :background ,zenburn-red-4))))
;; ;;;;; iedit-mode
;;    `(iedit-occurrence ((t (:background ,zenburn-bg+2 :weight bold))))
;; ;;;;; jabber-mode
;;    `(jabber-roster-user-away ((t (:foreground ,zenburn-green+2))))
;;    `(jabber-roster-user-online ((t (:foreground ,zenburn-blue-1))))
;;    `(jabber-roster-user-dnd ((t (:foreground ,zenburn-red+1))))
;;    `(jabber-roster-user-xa ((t (:foreground ,zenburn-magenta))))
;;    `(jabber-roster-user-chatty ((t (:foreground ,zenburn-orange))))
;;    `(jabber-roster-user-error ((t (:foreground ,zenburn-red+1))))
;;    `(jabber-rare-time-face ((t (:foreground ,zenburn-green+1))))
;;    `(jabber-chat-prompt-local ((t (:foreground ,zenburn-blue-1))))
;;    `(jabber-chat-prompt-foreign ((t (:foreground ,zenburn-red+1))))
;;    `(jabber-chat-prompt-system ((t (:foreground ,zenburn-green+3))))
;;    `(jabber-activity-face((t (:foreground ,zenburn-red+1))))
;;    `(jabber-activity-personal-face ((t (:foreground ,zenburn-blue+1))))
;;    `(jabber-title-small ((t (:height 1.1 :weight bold))))
;;    `(jabber-title-medium ((t (:height 1.2 :weight bold))))
;;    `(jabber-title-large ((t (:height 1.3 :weight bold))))
;; ;;;;; js2-mode
;;    `(js2-warning ((t (:underline ,zenburn-orange))))
;;    `(js2-error ((t (:foreground ,zenburn-red :weight bold))))
;;    `(js2-jsdoc-tag ((t (:foreground ,zenburn-green-2))))
;;    `(js2-jsdoc-type ((t (:foreground ,zenburn-green+2))))
;;    `(js2-jsdoc-value ((t (:foreground ,zenburn-green+3))))
;;    `(js2-function-param ((t (:foreground, zenburn-orange))))
;;    `(js2-external-variable ((t (:foreground ,zenburn-orange))))
;; ;;;;; additional js2 mode attributes for better syntax highlighting
;;    `(js2-instance-member ((t (:foreground ,zenburn-green-2))))
;;    `(js2-jsdoc-html-tag-delimiter ((t (:foreground ,zenburn-orange))))
;;    `(js2-jsdoc-html-tag-name ((t (:foreground ,zenburn-red-1))))
;;    `(js2-object-property ((t (:foreground ,zenburn-blue+1))))
;;    `(js2-magic-paren ((t (:foreground ,zenburn-blue-5))))
;;    `(js2-private-function-call ((t (:foreground ,zenburn-cyan))))
;;    `(js2-function-call ((t (:foreground ,zenburn-cyan))))
;;    `(js2-private-member ((t (:foreground ,zenburn-blue-1))))
;;    `(js2-keywords ((t (:foreground ,zenburn-magenta))))
;; ;;;;; ledger-mode
;;    `(ledger-font-payee-uncleared-face ((t (:foreground ,zenburn-red-1 :weight bold))))
;;    `(ledger-font-payee-cleared-face ((t (:foreground ,zenburn-fg :weight normal))))
;;    `(ledger-font-payee-pending-face ((t (:foreground ,zenburn-red :weight normal))))
;;    `(ledger-font-xact-highlight-face ((t (:background ,zenburn-bg+1))))
;;    `(ledger-font-auto-xact-face ((t (:foreground ,zenburn-yellow-1 :weight normal))))
;;    `(ledger-font-periodic-xact-face ((t (:foreground ,zenburn-green :weight normal))))
;;    `(ledger-font-pending-face ((t (:foreground ,zenburn-orange weight: normal))))
;;    `(ledger-font-other-face ((t (:foreground ,zenburn-fg))))
;;    `(ledger-font-posting-date-face ((t (:foreground ,zenburn-orange :weight normal))))
;;    `(ledger-font-posting-account-face ((t (:foreground ,zenburn-blue-1))))
;;    `(ledger-font-posting-account-cleared-face ((t (:foreground ,zenburn-fg))))
;;    `(ledger-font-posting-account-pending-face ((t (:foreground ,zenburn-orange))))
;;    `(ledger-font-posting-amount-face ((t (:foreground ,zenburn-orange))))
;;    `(ledger-occur-narrowed-face ((t (:foreground ,zenburn-fg-1 :invisible t))))
;;    `(ledger-occur-xact-face ((t (:background ,zenburn-bg+1))))
;;    `(ledger-font-comment-face ((t (:foreground ,zenburn-green))))
;;    `(ledger-font-reconciler-uncleared-face ((t (:foreground ,zenburn-red-1 :weight bold))))
;;    `(ledger-font-reconciler-cleared-face ((t (:foreground ,zenburn-fg :weight normal))))
;;    `(ledger-font-reconciler-pending-face ((t (:foreground ,zenburn-orange :weight normal))))
;;    `(ledger-font-report-clickable-face ((t (:foreground ,zenburn-orange :weight normal))))
;; ;;;;; linum-mode
;;    `(linum ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg))))
;; ;;;;; lispy
;;    `(lispy-command-name-face ((t (:background ,zenburn-bg-05 :inherit font-lock-function-name-face))))
;;    `(lispy-cursor-face ((t (:foreground ,zenburn-bg :background ,zenburn-fg))))
;;    `(lispy-face-hint ((t (:inherit highlight :foreground ,zenburn-yellow))))
;; ;;;;; ruler-mode
;;    `(ruler-mode-column-number ((t (:inherit 'ruler-mode-default :foreground ,zenburn-fg))))
;;    `(ruler-mode-fill-column ((t (:inherit 'ruler-mode-default :foreground ,zenburn-yellow))))
;;    `(ruler-mode-goal-column ((t (:inherit 'ruler-mode-fill-column))))
;;    `(ruler-mode-comment-column ((t (:inherit 'ruler-mode-fill-column))))
;;    `(ruler-mode-tab-stop ((t (:inherit 'ruler-mode-fill-column))))
;;    `(ruler-mode-current-column ((t (:foreground ,zenburn-yellow :box t))))
;;    `(ruler-mode-default ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg))))

;; ;;;;; lui
;;    `(lui-time-stamp-face ((t (:foreground ,zenburn-blue-1))))
;;    `(lui-hilight-face ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg))))
;;    `(lui-button-face ((t (:inherit hover-highlight))))
;; ;;;;; macrostep
;;    `(macrostep-gensym-1
;;      ((t (:foreground ,zenburn-green+2 :background ,zenburn-bg-1))))
;;    `(macrostep-gensym-2
;;      ((t (:foreground ,zenburn-red+1 :background ,zenburn-bg-1))))
;;    `(macrostep-gensym-3
;;      ((t (:foreground ,zenburn-blue+1 :background ,zenburn-bg-1))))
;;    `(macrostep-gensym-4
;;      ((t (:foreground ,zenburn-magenta :background ,zenburn-bg-1))))
;;    `(macrostep-gensym-5
;;      ((t (:foreground ,zenburn-yellow :background ,zenburn-bg-1))))
;;    `(macrostep-expansion-highlight-face
;;      ((t (:inherit highlight))))
;;    `(macrostep-macro-face
;;      ((t (:underline t))))
;; ;;;;; magit
;; ;;;;;; headings and diffs
;;    ;; Please read (info "(magit)Theming Faces") before changing this.
;;    `(magit-section-highlight           ((t (:background ,zenburn-bg+05))))
;;    `(magit-section-heading             ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(magit-section-heading-selection   ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(magit-diff-file-heading           ((t (:weight bold))))
;;    `(magit-diff-file-heading-highlight ((t (:background ,zenburn-bg+05 :weight bold))))
;;    `(magit-diff-file-heading-selection ((t (:background ,zenburn-bg+05 :weight bold
;;                                                         :foreground ,zenburn-orange))))
;;    `(magit-diff-added                  ((t (:background ,zenburn-green-2))))
;;    `(magit-diff-added-highlight        ((t (:background ,zenburn-green))))
;;    `(magit-diff-removed                ((t (:background ,zenburn-red-4))))
;;    `(magit-diff-removed-highlight      ((t (:background ,zenburn-red-3))))
;;    `(magit-diff-hunk-heading           ((t (:background ,zenburn-bg+1))))
;;    `(magit-diff-hunk-heading-highlight ((t (:background ,zenburn-bg+2))))
;;    `(magit-diff-hunk-heading-selection ((t (:background ,zenburn-bg+2
;;                                                         :foreground ,zenburn-orange))))
;;    `(magit-diff-lines-heading          ((t (:background ,zenburn-orange
;;                                                         :foreground ,zenburn-bg+2))))
;;    `(magit-diff-context-highlight      ((t (:background ,zenburn-bg+05
;;                                                         :foreground "grey70"))))
;;    `(magit-diffstat-added              ((t (:foreground ,zenburn-green+4))))
;;    `(magit-diffstat-removed            ((t (:foreground ,zenburn-red))))
;; ;;;;;; popup
;;    `(magit-popup-heading             ((t (:foreground ,zenburn-yellow  :weight bold))))
;;    `(magit-popup-key                 ((t (:foreground ,zenburn-green-2 :weight bold))))
;;    `(magit-popup-argument            ((t (:foreground ,zenburn-green   :weight bold))))
;;    `(magit-popup-disabled-argument   ((t (:foreground ,zenburn-fg-1    :weight normal))))
;;    `(magit-popup-option-value        ((t (:foreground ,zenburn-blue-2  :weight bold))))
;; ;;;;;; process
;;    `(magit-process-ok    ((t (:foreground ,zenburn-green  :weight bold))))
;;    `(magit-process-ng    ((t (:foreground ,zenburn-red    :weight bold))))
;; ;;;;;; log
;;    `(magit-log-author    ((t (:foreground ,zenburn-orange))))
;;    `(magit-log-date      ((t (:foreground ,zenburn-fg-1))))
;;    `(magit-log-graph     ((t (:foreground ,zenburn-fg+1))))
;; ;;;;;; sequence
;;    `(magit-sequence-pick ((t (:foreground ,zenburn-yellow-2))))
;;    `(magit-sequence-stop ((t (:foreground ,zenburn-green))))
;;    `(magit-sequence-part ((t (:foreground ,zenburn-yellow))))
;;    `(magit-sequence-head ((t (:foreground ,zenburn-blue))))
;;    `(magit-sequence-drop ((t (:foreground ,zenburn-red))))
;;    `(magit-sequence-done ((t (:foreground ,zenburn-fg-1))))
;;    `(magit-sequence-onto ((t (:foreground ,zenburn-fg-1))))
;; ;;;;;; bisect
;;    `(magit-bisect-good ((t (:foreground ,zenburn-green))))
;;    `(magit-bisect-skip ((t (:foreground ,zenburn-yellow))))
;;    `(magit-bisect-bad  ((t (:foreground ,zenburn-red))))
;; ;;;;;; blame
;;    `(magit-blame-heading ((t (:background ,zenburn-bg-1 :foreground ,zenburn-blue-2))))
;;    `(magit-blame-hash    ((t (:background ,zenburn-bg-1 :foreground ,zenburn-blue-2))))
;;    `(magit-blame-name    ((t (:background ,zenburn-bg-1 :foreground ,zenburn-orange))))
;;    `(magit-blame-date    ((t (:background ,zenburn-bg-1 :foreground ,zenburn-orange))))
;;    `(magit-blame-summary ((t (:background ,zenburn-bg-1 :foreground ,zenburn-blue-2
;;                                           :weight bold))))
;; ;;;;;; references etc
;;    `(magit-dimmed         ((t (:foreground ,zenburn-bg+3))))
;;    `(magit-hash           ((t (:foreground ,zenburn-bg+3))))
;;    `(magit-tag            ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(magit-branch-remote  ((t (:foreground ,zenburn-green  :weight bold))))
;;    `(magit-branch-local   ((t (:foreground ,zenburn-blue   :weight bold))))
;;    `(magit-branch-current ((t (:foreground ,zenburn-blue   :weight bold :box t))))
;;    `(magit-head           ((t (:foreground ,zenburn-blue   :weight bold))))
;;    `(magit-refname        ((t (:background ,zenburn-bg+2 :foreground ,zenburn-fg :weight bold))))
;;    `(magit-refname-stash  ((t (:background ,zenburn-bg+2 :foreground ,zenburn-fg :weight bold))))
;;    `(magit-refname-wip    ((t (:background ,zenburn-bg+2 :foreground ,zenburn-fg :weight bold))))
;;    `(magit-signature-good      ((t (:foreground ,zenburn-green))))
;;    `(magit-signature-bad       ((t (:foreground ,zenburn-red))))
;;    `(magit-signature-untrusted ((t (:foreground ,zenburn-yellow))))
;;    `(magit-signature-expired   ((t (:foreground ,zenburn-orange))))
;;    `(magit-signature-revoked   ((t (:foreground ,zenburn-magenta))))
;;    '(magit-signature-error     ((t (:inherit    magit-signature-bad))))
;;    `(magit-cherry-unmatched    ((t (:foreground ,zenburn-cyan))))
;;    `(magit-cherry-equivalent   ((t (:foreground ,zenburn-magenta))))
;;    `(magit-reflog-commit       ((t (:foreground ,zenburn-green))))
;;    `(magit-reflog-amend        ((t (:foreground ,zenburn-magenta))))
;;    `(magit-reflog-merge        ((t (:foreground ,zenburn-green))))
;;    `(magit-reflog-checkout     ((t (:foreground ,zenburn-blue))))
;;    `(magit-reflog-reset        ((t (:foreground ,zenburn-red))))
;;    `(magit-reflog-rebase       ((t (:foreground ,zenburn-magenta))))
;;    `(magit-reflog-cherry-pick  ((t (:foreground ,zenburn-green))))
;;    `(magit-reflog-remote       ((t (:foreground ,zenburn-cyan))))
;;    `(magit-reflog-other        ((t (:foreground ,zenburn-cyan))))
;; ;;;;; markup-faces
;;    `(markup-anchor-face ((t (:foreground ,zenburn-blue+1))))
;;    `(markup-code-face ((t (:inherit font-lock-constant-face))))
;;    `(markup-command-face ((t (:foreground ,zenburn-yellow))))
;;    `(markup-emphasis-face ((t (:inherit bold))))
;;    `(markup-internal-reference-face ((t (:foreground ,zenburn-yellow-2 :underline t))))
;;    `(markup-list-face ((t (:foreground ,zenburn-fg+1))))
;;    `(markup-meta-face ((t (:foreground ,zenburn-yellow))))
;;    `(markup-meta-hide-face ((t (:foreground ,zenburn-yellow))))
;;    `(markup-secondary-text-face ((t (:foreground ,zenburn-yellow-1))))
;;    `(markup-title-0-face ((t (:inherit font-lock-function-name-face :weight bold))))
;;    `(markup-title-1-face ((t (:inherit font-lock-function-name-face :weight bold))))
;;    `(markup-title-2-face ((t (:inherit font-lock-function-name-face :weight bold))))
;;    `(markup-title-3-face ((t (:inherit font-lock-function-name-face :weight bold))))
;;    `(markup-title-4-face ((t (:inherit font-lock-function-name-face :weight bold))))
;;    `(markup-typewriter-face ((t (:inherit font-lock-constant-face))))
;;    `(markup-verbatim-face ((t (:inherit font-lock-constant-face))))
;;    `(markup-value-face ((t (:foreground ,zenburn-yellow))))
;; ;;;;; message-mode
;;    `(message-cited-text ((t (:inherit font-lock-comment-face))))
;;    `(message-header-name ((t (:foreground ,zenburn-green+1))))
;;    `(message-header-other ((t (:foreground ,zenburn-green))))
;;    `(message-header-to ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(message-header-cc ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(message-header-newsgroups ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(message-header-subject ((t (:foreground ,zenburn-orange :weight bold))))
;;    `(message-header-xheader ((t (:foreground ,zenburn-green))))
;;    `(message-mml ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(message-separator ((t (:inherit font-lock-comment-face))))
;; ;;;;; mew
;;    `(mew-face-header-subject ((t (:foreground ,zenburn-orange))))
;;    `(mew-face-header-from ((t (:foreground ,zenburn-yellow))))
;;    `(mew-face-header-date ((t (:foreground ,zenburn-green))))
;;    `(mew-face-header-to ((t (:foreground ,zenburn-red))))
;;    `(mew-face-header-key ((t (:foreground ,zenburn-green))))
;;    `(mew-face-header-private ((t (:foreground ,zenburn-green))))
;;    `(mew-face-header-important ((t (:foreground ,zenburn-blue))))
;;    `(mew-face-header-marginal ((t (:foreground ,zenburn-fg :weight bold))))
;;    `(mew-face-header-warning ((t (:foreground ,zenburn-red))))
;;    `(mew-face-header-xmew ((t (:foreground ,zenburn-green))))
;;    `(mew-face-header-xmew-bad ((t (:foreground ,zenburn-red))))
;;    `(mew-face-body-url ((t (:foreground ,zenburn-orange))))
;;    `(mew-face-body-comment ((t (:foreground ,zenburn-fg :slant italic))))
;;    `(mew-face-body-cite1 ((t (:foreground ,zenburn-green))))
;;    `(mew-face-body-cite2 ((t (:foreground ,zenburn-blue))))
;;    `(mew-face-body-cite3 ((t (:foreground ,zenburn-orange))))
;;    `(mew-face-body-cite4 ((t (:foreground ,zenburn-yellow))))
;;    `(mew-face-body-cite5 ((t (:foreground ,zenburn-red))))
;;    `(mew-face-mark-review ((t (:foreground ,zenburn-blue))))
;;    `(mew-face-mark-escape ((t (:foreground ,zenburn-green))))
;;    `(mew-face-mark-delete ((t (:foreground ,zenburn-red))))
;;    `(mew-face-mark-unlink ((t (:foreground ,zenburn-yellow))))
;;    `(mew-face-mark-refile ((t (:foreground ,zenburn-green))))
;;    `(mew-face-mark-unread ((t (:foreground ,zenburn-red-2))))
;;    `(mew-face-eof-message ((t (:foreground ,zenburn-green))))
;;    `(mew-face-eof-part ((t (:foreground ,zenburn-yellow))))
;; ;;;;; mic-paren
;;    `(paren-face-match ((t (:foreground ,zenburn-cyan :background ,zenburn-bg :weight bold))))
;;    `(paren-face-mismatch ((t (:foreground ,zenburn-bg :background ,zenburn-magenta :weight bold))))
;;    `(paren-face-no-match ((t (:foreground ,zenburn-bg :background ,zenburn-red :weight bold))))
;; ;;;;; mingus
;;    `(mingus-directory-face ((t (:foreground ,zenburn-blue))))
;;    `(mingus-pausing-face ((t (:foreground ,zenburn-magenta))))
;;    `(mingus-playing-face ((t (:foreground ,zenburn-cyan))))
;;    `(mingus-playlist-face ((t (:foreground ,zenburn-cyan ))))
;;    `(mingus-mark-face ((t (:bold t :foreground ,zenburn-magenta))))
;;    `(mingus-song-file-face ((t (:foreground ,zenburn-yellow))))
;;    `(mingus-artist-face ((t (:foreground ,zenburn-cyan))))
;;    `(mingus-album-face ((t (:underline t :foreground ,zenburn-red+1))))
;;    `(mingus-album-stale-face ((t (:foreground ,zenburn-red+1))))
;;    `(mingus-stopped-face ((t (:foreground ,zenburn-red))))
;; ;;;;; nav
;;    `(nav-face-heading ((t (:foreground ,zenburn-yellow))))
;;    `(nav-face-button-num ((t (:foreground ,zenburn-cyan))))
;;    `(nav-face-dir ((t (:foreground ,zenburn-green))))
;;    `(nav-face-hdir ((t (:foreground ,zenburn-red))))
;;    `(nav-face-file ((t (:foreground ,zenburn-fg))))
;;    `(nav-face-hfile ((t (:foreground ,zenburn-red-4))))
;; ;;;;; merlin
;;    `(merlin-type-face ((t (:inherit highlight))))
;;    `(merlin-compilation-warning-face
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-orange)))
;;       (t
;;        (:underline ,zenburn-orange))))
;;    `(merlin-compilation-error-face
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-red)))
;;       (t
;;        (:underline ,zenburn-red))))
;; ;;;;; mu4e
;;    `(mu4e-cited-1-face ((t (:foreground ,zenburn-blue    :slant italic))))
;;    `(mu4e-cited-2-face ((t (:foreground ,zenburn-green+2 :slant italic))))
;;    `(mu4e-cited-3-face ((t (:foreground ,zenburn-blue-2  :slant italic))))
;;    `(mu4e-cited-4-face ((t (:foreground ,zenburn-green   :slant italic))))
;;    `(mu4e-cited-5-face ((t (:foreground ,zenburn-blue-4  :slant italic))))
;;    `(mu4e-cited-6-face ((t (:foreground ,zenburn-green-2 :slant italic))))
;;    `(mu4e-cited-7-face ((t (:foreground ,zenburn-blue    :slant italic))))
;;    `(mu4e-replied-face ((t (:foreground ,zenburn-bg+3))))
;;    `(mu4e-trashed-face ((t (:foreground ,zenburn-bg+3 :strike-through t))))
;; ;;;;; mumamo
;;    `(mumamo-background-chunk-major ((t (:background nil))))
;;    `(mumamo-background-chunk-submode1 ((t (:background ,zenburn-bg-1))))
;;    `(mumamo-background-chunk-submode2 ((t (:background ,zenburn-bg+2))))
;;    `(mumamo-background-chunk-submode3 ((t (:background ,zenburn-bg+3))))
;;    `(mumamo-background-chunk-submode4 ((t (:background ,zenburn-bg+1))))
;; ;;;;; neotree
;;    `(neo-banner-face ((t (:foreground ,zenburn-blue+1 :weight bold))))
;;    `(neo-header-face ((t (:foreground ,zenburn-fg))))
;;    `(neo-root-dir-face ((t (:foreground ,zenburn-blue+1 :weight bold))))
;;    `(neo-dir-link-face ((t (:foreground ,zenburn-blue))))
;;    `(neo-file-link-face ((t (:foreground ,zenburn-fg))))
;;    `(neo-expand-btn-face ((t (:foreground ,zenburn-blue))))
;;    `(neo-vc-default-face ((t (:foreground ,zenburn-fg+1))))
;;    `(neo-vc-user-face ((t (:foreground ,zenburn-red :slant italic))))
;;    `(neo-vc-up-to-date-face ((t (:foreground ,zenburn-fg))))
;;    `(neo-vc-edited-face ((t (:foreground ,zenburn-magenta))))
;;    `(neo-vc-needs-merge-face ((t (:foreground ,zenburn-red+1))))
;;    `(neo-vc-unlocked-changes-face ((t (:foreground ,zenburn-red :background ,zenburn-blue-5))))
;;    `(neo-vc-added-face ((t (:foreground ,zenburn-green+1))))
;;    `(neo-vc-conflict-face ((t (:foreground ,zenburn-red+1))))
;;    `(neo-vc-missing-face ((t (:foreground ,zenburn-red+1))))
;;    `(neo-vc-ignored-face ((t (:foreground ,zenburn-fg-1))))
;; ;;;;; org-mode
;;    `(org-agenda-date-today
;;      ((t (:foreground ,zenburn-fg+1 :slant italic :weight bold))) t)
;;    `(org-agenda-structure
;;      ((t (:inherit font-lock-comment-face))))
;;    `(org-archived ((t (:foreground ,zenburn-fg :weight bold))))
;;    `(org-block ((t (:background ,zenburn-bg+05 :extend t))))
;;    `(org-checkbox ((t (:background ,zenburn-bg+2 :foreground ,zenburn-fg+1
;;                                    :box (:line-width 1 :style released-button)))))
;;    `(org-date ((t (:foreground ,zenburn-blue :underline t))))
;;    `(org-deadline-announce ((t (:foreground ,zenburn-red-1))))
;;    `(org-done ((t (:weight bold :weight bold :foreground ,zenburn-green+3))))
;;    `(org-formula ((t (:foreground ,zenburn-yellow-2))))
;;    `(org-headline-done ((t (:foreground ,zenburn-green+3))))
;;    `(org-hide ((t (:foreground ,zenburn-bg))))
;;    `(org-level-1 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-orange
;;                                ,@(when zenburn-scale-org-headlines
;;                                    (list :height zenburn-height-plus-4))))))
;;    `(org-level-2 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-green+4
;;                                ,@(when zenburn-scale-org-headlines
;;                                    (list :height zenburn-height-plus-3))))))
;;    `(org-level-3 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-blue-1
;;                                ,@(when zenburn-scale-org-headlines
;;                                    (list :height zenburn-height-plus-2))))))
;;    `(org-level-4 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-yellow-2
;;                                ,@(when zenburn-scale-org-headlines
;;                                    (list :height zenburn-height-plus-1))))))
;;    `(org-level-5 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-cyan))))
;;    `(org-level-6 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-green+2))))
;;    `(org-level-7 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-red-4))))
;;    `(org-level-8 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-blue-4))))
;;    `(org-link ((t (:foreground ,zenburn-yellow-2 :underline t))))
;;    `(org-quote ((t (:background ,zenburn-bg+05 :extend t))))
;;    `(org-scheduled ((t (:foreground ,zenburn-green+4))))
;;    `(org-scheduled-previously ((t (:foreground ,zenburn-red))))
;;    `(org-scheduled-today ((t (:foreground ,zenburn-blue+1))))
;;    `(org-sexp-date ((t (:foreground ,zenburn-blue+1 :underline t))))
;;    `(org-special-keyword ((t (:inherit font-lock-comment-face))))
;;    `(org-table ((t (:foreground ,zenburn-green+2))))
;;    `(org-tag ((t (:weight bold :weight bold))))
;;    `(org-time-grid ((t (:foreground ,zenburn-orange))))
;;    `(org-todo ((t (:weight bold :foreground ,zenburn-red :weight bold))))
;;    `(org-upcoming-deadline ((t (:inherit font-lock-keyword-face))))
;;    `(org-warning ((t (:weight bold :foreground ,zenburn-red :weight bold :underline nil))))
;;    `(org-column ((t (:background ,zenburn-bg-1))))
;;    `(org-column-title ((t (:background ,zenburn-bg-1 :underline t :weight bold))))
;;    `(org-mode-line-clock ((t (:foreground ,zenburn-fg :background ,zenburn-bg-1))))
;;    `(org-mode-line-clock-overrun ((t (:foreground ,zenburn-bg :background ,zenburn-red-1))))
;;    `(org-ellipsis ((t (:foreground ,zenburn-yellow-1 :underline t))))
;;    `(org-footnote ((t (:foreground ,zenburn-cyan :underline t))))
;;    `(org-document-title ((t (:inherit ,z-variable-pitch :foreground ,zenburn-blue
;;                                       :weight bold
;;                                       ,@(when zenburn-scale-org-headlines
;;                                           (list :height zenburn-height-plus-4))))))
;;    `(org-document-info ((t (:foreground ,zenburn-blue))))
;;    `(org-habit-ready-face ((t :background ,zenburn-green)))
;;    `(org-habit-alert-face ((t :background ,zenburn-yellow-1 :foreground ,zenburn-bg)))
;;    `(org-habit-clear-face ((t :background ,zenburn-blue-3)))
;;    `(org-habit-overdue-face ((t :background ,zenburn-red-3)))
;;    `(org-habit-clear-future-face ((t :background ,zenburn-blue-4)))
;;    `(org-habit-ready-future-face ((t :background ,zenburn-green-2)))
;;    `(org-habit-alert-future-face ((t :background ,zenburn-yellow-2 :foreground ,zenburn-bg)))
;;    `(org-habit-overdue-future-face ((t :background ,zenburn-red-4)))
;; ;;;;; org-ref
;;    `(org-ref-ref-face ((t :underline t)))
;;    `(org-ref-label-face ((t :underline t)))
;;    `(org-ref-cite-face ((t :underline t)))
;;    `(org-ref-glossary-face ((t :underline t)))
;;    `(org-ref-acronym-face ((t :underline t)))
;; ;;;;; outline
;;    `(outline-1 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-orange
;;                              ,@(when zenburn-scale-outline-headlines
;;                                  (list :height zenburn-height-plus-4))))))
;;    `(outline-2 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-green+4
;;                              ,@(when zenburn-scale-outline-headlines
;;                                  (list :height zenburn-height-plus-3))))))
;;    `(outline-3 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-blue-1
;;                              ,@(when zenburn-scale-outline-headlines
;;                                  (list :height zenburn-height-plus-2))))))
;;    `(outline-4 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-yellow-2
;;                              ,@(when zenburn-scale-outline-headlines
;;                                  (list :height zenburn-height-plus-1))))))
;;    `(outline-5 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-cyan))))
;;    `(outline-6 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-green+2))))
;;    `(outline-7 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-red-4))))
;;    `(outline-8 ((t (:inherit ,z-variable-pitch :foreground ,zenburn-blue-4))))
;; ;;;;; p4
;;    `(p4-depot-added-face ((t :inherit diff-added)))
;;    `(p4-depot-branch-op-face ((t :inherit diff-changed)))
;;    `(p4-depot-deleted-face ((t :inherit diff-removed)))
;;    `(p4-depot-unmapped-face ((t :inherit diff-changed)))
;;    `(p4-diff-change-face ((t :inherit diff-changed)))
;;    `(p4-diff-del-face ((t :inherit diff-removed)))
;;    `(p4-diff-file-face ((t :inherit diff-file-header)))
;;    `(p4-diff-head-face ((t :inherit diff-header)))
;;    `(p4-diff-ins-face ((t :inherit diff-added)))
;; ;;;;; c/perl
;;    `(cperl-nonoverridable-face ((t (:foreground ,zenburn-magenta))))
;;    `(cperl-array-face ((t (:foreground ,zenburn-yellow, :backgorund ,zenburn-bg))))
;;    `(cperl-hash-face ((t (:foreground ,zenburn-yellow-1, :background ,zenburn-bg))))
;; ;;;;; paren-face
;;    `(parenthesis ((t (:foreground ,zenburn-fg-1))))
;; ;;;;; perspective
;;    `(persp-selected-face ((t (:foreground ,zenburn-yellow-2))))
;; ;;;;; powerline
;;    `(powerline-active1 ((t (:background ,zenburn-bg-05 :inherit mode-line))))
;;    `(powerline-active2 ((t (:background ,zenburn-bg+2 :inherit mode-line))))
;;    `(powerline-inactive1 ((t (:background ,zenburn-bg+1 :inherit mode-line-inactive))))
;;    `(powerline-inactive2 ((t (:background ,zenburn-bg+3 :inherit mode-line-inactive))))
;; ;;;;; proofgeneral
;;    `(proof-active-area-face ((t (:underline t))))
;;    `(proof-boring-face ((t (:foreground ,zenburn-fg :background ,zenburn-bg+2))))
;;    `(proof-command-mouse-highlight-face ((t (:inherit proof-mouse-highlight-face))))
;;    `(proof-debug-message-face ((t (:inherit proof-boring-face))))
;;    `(proof-declaration-name-face ((t (:inherit font-lock-keyword-face :foreground nil))))
;;    `(proof-eager-annotation-face ((t (:foreground ,zenburn-bg :background ,zenburn-orange))))
;;    `(proof-error-face ((t (:foreground ,zenburn-fg :background ,zenburn-red-4))))
;;    `(proof-highlight-dependency-face ((t (:foreground ,zenburn-bg :background ,zenburn-yellow-1))))
;;    `(proof-highlight-dependent-face ((t (:foreground ,zenburn-bg :background ,zenburn-orange))))
;;    `(proof-locked-face ((t (:background ,zenburn-blue-5))))
;;    `(proof-mouse-highlight-face ((t (:foreground ,zenburn-bg :background ,zenburn-orange))))
;;    `(proof-queue-face ((t (:background ,zenburn-red-4))))
;;    `(proof-region-mouse-highlight-face ((t (:inherit proof-mouse-highlight-face))))
;;    `(proof-script-highlight-error-face ((t (:background ,zenburn-red-2))))
;;    `(proof-tacticals-name-face ((t (:inherit font-lock-constant-face :foreground nil :background ,zenburn-bg))))
;;    `(proof-tactics-name-face ((t (:inherit font-lock-constant-face :foreground nil :background ,zenburn-bg))))
;;    `(proof-warning-face ((t (:foreground ,zenburn-bg :background ,zenburn-yellow-1))))
;; ;;;;; racket-mode
;;    `(racket-keyword-argument-face ((t (:inherit font-lock-constant-face))))
;;    `(racket-selfeval-face ((t (:inherit font-lock-type-face))))
;; ;;;;; rainbow-delimiters
;;    `(rainbow-delimiters-depth-1-face ((t (:foreground ,zenburn-fg))))
;;    `(rainbow-delimiters-depth-2-face ((t (:foreground ,zenburn-green+4))))
;;    `(rainbow-delimiters-depth-3-face ((t (:foreground ,zenburn-yellow-2))))
;;    `(rainbow-delimiters-depth-4-face ((t (:foreground ,zenburn-cyan))))
;;    `(rainbow-delimiters-depth-5-face ((t (:foreground ,zenburn-green+2))))
;;    `(rainbow-delimiters-depth-6-face ((t (:foreground ,zenburn-blue+1))))
;;    `(rainbow-delimiters-depth-7-face ((t (:foreground ,zenburn-yellow-1))))
;;    `(rainbow-delimiters-depth-8-face ((t (:foreground ,zenburn-green+1))))
;;    `(rainbow-delimiters-depth-9-face ((t (:foreground ,zenburn-blue-2))))
;;    `(rainbow-delimiters-depth-10-face ((t (:foreground ,zenburn-orange))))
;;    `(rainbow-delimiters-depth-11-face ((t (:foreground ,zenburn-green))))
;;    `(rainbow-delimiters-depth-12-face ((t (:foreground ,zenburn-blue-5))))
;; ;;;;; rcirc
;;    `(rcirc-my-nick ((t (:foreground ,zenburn-blue))))
;;    `(rcirc-other-nick ((t (:foreground ,zenburn-orange))))
;;    `(rcirc-bright-nick ((t (:foreground ,zenburn-blue+1))))
;;    `(rcirc-dim-nick ((t (:foreground ,zenburn-blue-2))))
;;    `(rcirc-server ((t (:foreground ,zenburn-green))))
;;    `(rcirc-server-prefix ((t (:foreground ,zenburn-green+1))))
;;    `(rcirc-timestamp ((t (:foreground ,zenburn-green+2))))
;;    `(rcirc-nick-in-message ((t (:foreground ,zenburn-yellow))))
;;    `(rcirc-nick-in-message-full-line ((t (:weight bold))))
;;    `(rcirc-prompt ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(rcirc-track-nick ((t (:inverse-video t))))
;;    `(rcirc-track-keyword ((t (:weight bold))))
;;    `(rcirc-url ((t (:weight bold))))
;;    `(rcirc-keyword ((t (:foreground ,zenburn-yellow :weight bold))))
;; ;;;;; re-builder
;;    `(reb-match-0 ((t (:foreground ,zenburn-bg :background ,zenburn-magenta))))
;;    `(reb-match-1 ((t (:foreground ,zenburn-bg :background ,zenburn-blue))))
;;    `(reb-match-2 ((t (:foreground ,zenburn-bg :background ,zenburn-orange))))
;;    `(reb-match-3 ((t (:foreground ,zenburn-bg :background ,zenburn-red))))
;; ;;;;; realgud
;;    `(realgud-overlay-arrow1 ((t (:foreground ,zenburn-green))))
;;    `(realgud-overlay-arrow2 ((t (:foreground ,zenburn-yellow))))
;;    `(realgud-overlay-arrow3 ((t (:foreground ,zenburn-orange))))
;;    `(realgud-bp-enabled-face ((t (:inherit error))))
;;    `(realgud-bp-disabled-face ((t (:inherit secondary-selection))))
;;    `(realgud-bp-line-enabled-face ((t (:box (:color ,zenburn-red :style nil)))))
;;    `(realgud-bp-line-disabled-face ((t (:box (:color "grey70" :style nil)))))
;;    `(realgud-line-number ((t (:foreground ,zenburn-yellow))))
;;    `(realgud-backtrace-number ((t (:foreground ,zenburn-yellow, :weight bold))))
;; ;;;;; regex-tool
;;    `(regex-tool-matched-face ((t (:background ,zenburn-blue-4 :weight bold))))
;; ;;;;; rpm-mode
;;    `(rpm-spec-dir-face ((t (:foreground ,zenburn-green))))
;;    `(rpm-spec-doc-face ((t (:foreground ,zenburn-green))))
;;    `(rpm-spec-ghost-face ((t (:foreground ,zenburn-red))))
;;    `(rpm-spec-macro-face ((t (:foreground ,zenburn-yellow))))
;;    `(rpm-spec-obsolete-tag-face ((t (:foreground ,zenburn-red))))
;;    `(rpm-spec-package-face ((t (:foreground ,zenburn-red))))
;;    `(rpm-spec-section-face ((t (:foreground ,zenburn-yellow))))
;;    `(rpm-spec-tag-face ((t (:foreground ,zenburn-blue))))
;;    `(rpm-spec-var-face ((t (:foreground ,zenburn-red))))
;; ;;;;; rst-mode
;;    `(rst-level-1-face ((t (:foreground ,zenburn-orange))))
;;    `(rst-level-2-face ((t (:foreground ,zenburn-green+1))))
;;    `(rst-level-3-face ((t (:foreground ,zenburn-blue-1))))
;;    `(rst-level-4-face ((t (:foreground ,zenburn-yellow-2))))
;;    `(rst-level-5-face ((t (:foreground ,zenburn-cyan))))
;;    `(rst-level-6-face ((t (:foreground ,zenburn-green-2))))
;; ;;;;; selectrum
;;    `(selectrum-current-candidate ((t (:foreground ,zenburn-yellow :weight bold :underline t))))
;;    `(selectrum-primary-highlight ((t (:background ,zenburn-green-2))))
;;    `(selectrum-secondary-highlight ((t (:background ,zenburn-green))))
;; ;;;;; sh-mode
;;    `(sh-heredoc     ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(sh-quoted-exec ((t (:foreground ,zenburn-red))))
;; ;;;;; show-paren
;;    `(show-paren-mismatch ((t (:foreground ,zenburn-red+1 :background ,zenburn-bg+3 :weight bold))))
;;    `(show-paren-match ((t (:foreground ,zenburn-fg :background ,zenburn-bg+3 :weight bold))))
;; ;;;;; smart-mode-line
;;    ;; use (setq sml/theme nil) to enable Zenburn for sml
;;    `(sml/global ((,class (:foreground ,zenburn-fg :weight bold))))
;;    `(sml/modes ((,class (:foreground ,zenburn-yellow :weight bold))))
;;    `(sml/minor-modes ((,class (:foreground ,zenburn-fg-1 :weight bold))))
;;    `(sml/filename ((,class (:foreground ,zenburn-yellow :weight bold))))
;;    `(sml/line-number ((,class (:foreground ,zenburn-blue :weight bold))))
;;    `(sml/col-number ((,class (:foreground ,zenburn-blue+1 :weight bold))))
;;    `(sml/position-percentage ((,class (:foreground ,zenburn-blue-1 :weight bold))))
;;    `(sml/prefix ((,class (:foreground ,zenburn-orange))))
;;    `(sml/git ((,class (:foreground ,zenburn-green+3))))
;;    `(sml/process ((,class (:weight bold))))
;;    `(sml/sudo ((,class  (:foreground ,zenburn-orange :weight bold))))
;;    `(sml/read-only ((,class (:foreground ,zenburn-red-2))))
;;    `(sml/outside-modified ((,class (:foreground ,zenburn-orange))))
;;    `(sml/modified ((,class (:foreground ,zenburn-red))))
;;    `(sml/vc-edited ((,class (:foreground ,zenburn-green+2))))
;;    `(sml/charging ((,class (:foreground ,zenburn-green+4))))
;;    `(sml/discharging ((,class (:foreground ,zenburn-red+1))))
;; ;;;;; smartparens
;;    `(sp-show-pair-mismatch-face ((t (:foreground ,zenburn-red+1 :background ,zenburn-bg+3 :weight bold))))
;;    `(sp-show-pair-match-face ((t (:background ,zenburn-bg+3 :weight bold))))
;; ;;;;; sml-mode-line
;;    '(sml-modeline-end-face ((t :inherit default :width condensed)))
;; ;;;;; SLIME
;;    `(slime-repl-output-face ((t (:foreground ,zenburn-red))))
;;    `(slime-repl-inputed-output-face ((t (:foreground ,zenburn-green))))
;;    `(slime-error-face
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-red)))
;;       (t
;;        (:underline ,zenburn-red))))
;;    `(slime-warning-face
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-orange)))
;;       (t
;;        (:underline ,zenburn-orange))))
;;    `(slime-style-warning-face
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-yellow)))
;;       (t
;;        (:underline ,zenburn-yellow))))
;;    `(slime-note-face
;;      ((((supports :underline (:style wave)))
;;        (:underline (:style wave :color ,zenburn-green)))
;;       (t
;;        (:underline ,zenburn-green))))
;;    `(slime-highlight-face ((t (:inherit highlight))))
;; ;;;;; solaire
;;    `(solaire-default-face ((t (:inherit default :background ,zenburn-bg-08))))
;;    `(solaire-minibuffer-face ((t (:inherit default :background ,zenburn-bg-08))))
;;    `(solaire-hl-line-face ((t (:inherit hl-line :background ,zenburn-bg))))
;;    `(solaire-org-hide-face ((t (:inherit org-hide :background ,zenburn-bg-08))))
;; ;;;;; speedbar
;;    `(speedbar-button-face ((t (:foreground ,zenburn-green+2))))
;;    `(speedbar-directory-face ((t (:foreground ,zenburn-cyan))))
;;    `(speedbar-file-face ((t (:foreground ,zenburn-fg))))
;;    `(speedbar-highlight-face ((t (:foreground ,zenburn-bg :background ,zenburn-green+2))))
;;    `(speedbar-selected-face ((t (:foreground ,zenburn-red))))
;;    `(speedbar-separator-face ((t (:foreground ,zenburn-bg :background ,zenburn-blue-1))))
;;    `(speedbar-tag-face ((t (:foreground ,zenburn-yellow))))
;; ;;;;; swiper
;;    `(swiper-line-face ((t (:underline t))))
;; ;;;;; sx
;;    `(sx-custom-button
;;      ((t (:background ,zenburn-fg :foreground ,zenburn-bg-1
;;                       :box (:line-width 3 :style released-button) :height 0.9))))
;;    `(sx-question-list-answers
;;      ((t (:foreground ,zenburn-green+3
;;                       :height 1.0 :inherit sx-question-list-parent))))
;;    `(sx-question-mode-accepted
;;      ((t (:foreground ,zenburn-green+3
;;                       :height 1.3 :inherit sx-question-mode-title))))
;;    '(sx-question-mode-content-face ((t (:inherit highlight))))
;;    `(sx-question-mode-kbd-tag
;;      ((t (:box (:color ,zenburn-bg-1 :line-width 3 :style released-button)
;;                :height 0.9 :weight semi-bold))))
;; ;;;;; tabbar
;;    `(tabbar-button ((t (:foreground ,zenburn-fg
;;                                     :background ,zenburn-bg))))
;;    `(tabbar-selected ((t (:foreground ,zenburn-fg
;;                                       :background ,zenburn-bg
;;                                       :box (:line-width -1 :style pressed-button)))))
;;    `(tabbar-unselected ((t (:foreground ,zenburn-fg
;;                                         :background ,zenburn-bg+1
;;                                         :box (:line-width -1 :style released-button)))))
;; ;;;;; term
;;    `(term-color-black ((t (:foreground ,zenburn-bg
;;                                        :background ,zenburn-bg-1))))
;;    `(term-color-red ((t (:foreground ,zenburn-red-2
;;                                      :background ,zenburn-red-4))))
;;    `(term-color-green ((t (:foreground ,zenburn-green
;;                                        :background ,zenburn-green+2))))
;;    `(term-color-yellow ((t (:foreground ,zenburn-orange
;;                                         :background ,zenburn-yellow))))
;;    `(term-color-blue ((t (:foreground ,zenburn-blue-1
;;                                       :background ,zenburn-blue-4))))
;;    `(term-color-magenta ((t (:foreground ,zenburn-magenta
;;                                          :background ,zenburn-red))))
;;    `(term-color-cyan ((t (:foreground ,zenburn-cyan
;;                                       :background ,zenburn-blue))))
;;    `(term-color-white ((t (:foreground ,zenburn-fg
;;                                        :background ,zenburn-fg-1))))
;;    '(term-default-fg-color ((t (:inherit term-color-white))))
;;    '(term-default-bg-color ((t (:inherit term-color-black))))
;; ;;;;; undo-tree
;;    `(undo-tree-visualizer-active-branch-face ((t (:foreground ,zenburn-fg+1 :weight bold))))
;;    `(undo-tree-visualizer-current-face ((t (:foreground ,zenburn-red-1 :weight bold))))
;;    `(undo-tree-visualizer-default-face ((t (:foreground ,zenburn-fg))))
;;    `(undo-tree-visualizer-register-face ((t (:foreground ,zenburn-yellow))))
;;    `(undo-tree-visualizer-unmodified-face ((t (:foreground ,zenburn-cyan))))
;; ;;;;; visual-regexp
;;    `(vr/group-0 ((t (:foreground ,zenburn-bg :background ,zenburn-green :weight bold))))
;;    `(vr/group-1 ((t (:foreground ,zenburn-bg :background ,zenburn-orange :weight bold))))
;;    `(vr/group-2 ((t (:foreground ,zenburn-bg :background ,zenburn-blue :weight bold))))
;;    `(vr/match-0 ((t (:inherit isearch))))
;;    `(vr/match-1 ((t (:foreground ,zenburn-yellow-2 :background ,zenburn-bg-1 :weight bold))))
;;    `(vr/match-separator-face ((t (:foreground ,zenburn-red :weight bold))))
;; ;;;;; volatile-highlights
;;    `(vhl/default-face ((t (:background ,zenburn-bg-05))))
;; ;;;;; web-mode
;;    `(web-mode-builtin-face ((t (:inherit ,font-lock-builtin-face))))
;;    `(web-mode-comment-face ((t (:inherit ,font-lock-comment-face))))
;;    `(web-mode-constant-face ((t (:inherit ,font-lock-constant-face))))
;;    `(web-mode-css-at-rule-face ((t (:foreground ,zenburn-orange ))))
;;    `(web-mode-css-prop-face ((t (:foreground ,zenburn-orange))))
;;    `(web-mode-css-pseudo-class-face ((t (:foreground ,zenburn-green+3 :weight bold))))
;;    `(web-mode-css-rule-face ((t (:foreground ,zenburn-blue))))
;;    `(web-mode-doctype-face ((t (:inherit ,font-lock-comment-face))))
;;    `(web-mode-folded-face ((t (:underline t))))
;;    `(web-mode-function-name-face ((t (:foreground ,zenburn-blue))))
;;    `(web-mode-html-attr-name-face ((t (:foreground ,zenburn-orange))))
;;    `(web-mode-html-attr-value-face ((t (:inherit ,font-lock-string-face))))
;;    `(web-mode-html-tag-face ((t (:foreground ,zenburn-cyan))))
;;    `(web-mode-keyword-face ((t (:inherit ,font-lock-keyword-face))))
;;    `(web-mode-preprocessor-face ((t (:inherit ,font-lock-preprocessor-face))))
;;    `(web-mode-string-face ((t (:inherit ,font-lock-string-face))))
;;    `(web-mode-type-face ((t (:inherit ,font-lock-type-face))))
;;    `(web-mode-variable-name-face ((t (:inherit ,font-lock-variable-name-face))))
;;    `(web-mode-server-background-face ((t (:background ,zenburn-bg))))
;;    `(web-mode-server-comment-face ((t (:inherit web-mode-comment-face))))
;;    `(web-mode-server-string-face ((t (:inherit web-mode-string-face))))
;;    `(web-mode-symbol-face ((t (:inherit font-lock-constant-face))))
;;    `(web-mode-warning-face ((t (:inherit font-lock-warning-face))))
;;    `(web-mode-whitespaces-face ((t (:background ,zenburn-red))))
;; ;;;;; whitespace-mode
;;    `(whitespace-space ((t (:background ,zenburn-bg+1 :foreground ,zenburn-bg+1))))
;;    `(whitespace-hspace ((t (:background ,zenburn-bg+1 :foreground ,zenburn-bg+1))))
;;    `(whitespace-tab ((t (:background ,zenburn-red-1))))
;;    `(whitespace-newline ((t (:foreground ,zenburn-bg+1))))
;;    `(whitespace-trailing ((t (:background ,zenburn-red))))
;;    `(whitespace-line ((t (:background ,zenburn-bg :foreground ,zenburn-magenta))))
;;    `(whitespace-space-before-tab ((t (:background ,zenburn-orange :foreground ,zenburn-orange))))
;;    `(whitespace-indentation ((t (:background ,zenburn-yellow :foreground ,zenburn-red))))
;;    `(whitespace-empty ((t (:background ,zenburn-yellow))))
;;    `(whitespace-space-after-tab ((t (:background ,zenburn-yellow :foreground ,zenburn-red))))
;; ;;;;; wanderlust
;;    `(wl-highlight-folder-few-face ((t (:foreground ,zenburn-red-2))))
;;    `(wl-highlight-folder-many-face ((t (:foreground ,zenburn-red-1))))
;;    `(wl-highlight-folder-path-face ((t (:foreground ,zenburn-orange))))
;;    `(wl-highlight-folder-unread-face ((t (:foreground ,zenburn-blue))))
;;    `(wl-highlight-folder-zero-face ((t (:foreground ,zenburn-fg))))
;;    `(wl-highlight-folder-unknown-face ((t (:foreground ,zenburn-blue))))
;;    `(wl-highlight-message-citation-header ((t (:foreground ,zenburn-red-1))))
;;    `(wl-highlight-message-cited-text-1 ((t (:foreground ,zenburn-red))))
;;    `(wl-highlight-message-cited-text-2 ((t (:foreground ,zenburn-green+2))))
;;    `(wl-highlight-message-cited-text-3 ((t (:foreground ,zenburn-blue))))
;;    `(wl-highlight-message-cited-text-4 ((t (:foreground ,zenburn-blue+1))))
;;    `(wl-highlight-message-header-contents-face ((t (:foreground ,zenburn-green))))
;;    `(wl-highlight-message-headers-face ((t (:foreground ,zenburn-red+1))))
;;    `(wl-highlight-message-important-header-contents ((t (:foreground ,zenburn-green+2))))
;;    `(wl-highlight-message-header-contents ((t (:foreground ,zenburn-green+1))))
;;    `(wl-highlight-message-important-header-contents2 ((t (:foreground ,zenburn-green+2))))
;;    `(wl-highlight-message-signature ((t (:foreground ,zenburn-green))))
;;    `(wl-highlight-message-unimportant-header-contents ((t (:foreground ,zenburn-fg))))
;;    `(wl-highlight-summary-answered-face ((t (:foreground ,zenburn-blue))))
;;    `(wl-highlight-summary-disposed-face ((t (:foreground ,zenburn-fg
;;                                                          :slant italic))))
;;    `(wl-highlight-summary-new-face ((t (:foreground ,zenburn-blue))))
;;    `(wl-highlight-summary-normal-face ((t (:foreground ,zenburn-fg))))
;;    `(wl-highlight-summary-thread-top-face ((t (:foreground ,zenburn-yellow))))
;;    `(wl-highlight-thread-indent-face ((t (:foreground ,zenburn-magenta))))
;;    `(wl-highlight-summary-refiled-face ((t (:foreground ,zenburn-fg))))
;;    `(wl-highlight-summary-displaying-face ((t (:underline t :weight bold))))
;; ;;;;; which-func-mode
;;    `(which-func ((t (:foreground ,zenburn-green+4))))
;; ;;;;; xcscope
;;    `(cscope-file-face ((t (:foreground ,zenburn-yellow :weight bold))))
;;    `(cscope-function-face ((t (:foreground ,zenburn-cyan :weight bold))))
;;    `(cscope-line-number-face ((t (:foreground ,zenburn-red :weight bold))))
;;    `(cscope-mouse-face ((t (:foreground ,zenburn-bg :background ,zenburn-blue+1))))
;;    `(cscope-separator-face ((t (:foreground ,zenburn-red :weight bold
;;                                             :underline t :overline t))))
;; ;;;;; yascroll
;;    `(yascroll:thumb-text-area ((t (:background ,zenburn-bg-1))))
;;    `(yascroll:thumb-fringe ((t (:background ,zenburn-bg-1 :foreground ,zenburn-bg-1))))
;;    ))

;; ;;; Theme Variables
;; (zenburn-with-color-variables
;;   (custom-theme-set-variables
;;    'zenburn
;; ;;;;; ansi-color
;;    `(ansi-color-names-vector [,zenburn-bg ,zenburn-red ,zenburn-green ,zenburn-yellow
;;                                           ,zenburn-blue ,zenburn-magenta ,zenburn-cyan ,zenburn-fg])
;; ;;;;; company-quickhelp
;;    `(company-quickhelp-color-background ,zenburn-bg+1)
;;    `(company-quickhelp-color-foreground ,zenburn-fg)
;; ;;;;; fill-column-indicator
;;    `(fci-rule-color ,zenburn-bg-05)
;; ;;;;; nrepl-client
;;    `(nrepl-message-colors
;;      '(,zenburn-red ,zenburn-orange ,zenburn-yellow ,zenburn-green ,zenburn-green+4
;;        ,zenburn-cyan ,zenburn-blue+1 ,zenburn-magenta))
;; ;;;;; pdf-tools
;;    `(pdf-view-midnight-colors '(,zenburn-fg . ,zenburn-bg-05))
;; ;;;;; vc-annotate
;;    `(vc-annotate-color-map
;;      '(( 20. . ,zenburn-red-1)
;;        ( 40. . ,zenburn-red)
;;        ( 60. . ,zenburn-orange)
;;        ( 80. . ,zenburn-yellow-2)
;;        (100. . ,zenburn-yellow-1)
;;        (120. . ,zenburn-yellow)
;;        (140. . ,zenburn-green-2)
;;        (160. . ,zenburn-green)
;;        (180. . ,zenburn-green+1)
;;        (200. . ,zenburn-green+2)
;;        (220. . ,zenburn-green+3)
;;        (240. . ,zenburn-green+4)
;;        (260. . ,zenburn-cyan)
;;        (280. . ,zenburn-blue-2)
;;        (300. . ,zenburn-blue-1)
;;        (320. . ,zenburn-blue)
;;        (340. . ,zenburn-blue+1)
;;        (360. . ,zenburn-magenta)))
;;    `(vc-annotate-very-old-color ,zenburn-magenta)
;;    `(vc-annotate-background ,zenburn-bg-1)
;;    ))

;; ;;; Rainbow Support

;; (declare-function rainbow-mode 'rainbow-mode)
;; (declare-function rainbow-colorize-by-assoc 'rainbow-mode)

;; (defcustom zenburn-add-font-lock-keywords nil
;;   "Whether to add font-lock keywords for zenburn color names.

;; In buffers visiting library `zenburn-theme.el' the zenburn
;; specific keywords are always added, provided that library has
;; been loaded (because that is where the code that does it is
;; defined).  If you visit this file and only enable the theme,
;; then you have to turn `rainbow-mode' off and on again for the
;; zenburn-specific font-lock keywords to be used.

;; In all other Emacs-Lisp buffers this variable controls whether
;; this should be done.  This requires library `rainbow-mode'."
;;   :type 'boolean
;;   :group 'zenburn-theme)

;; (defvar zenburn-colors-font-lock-keywords nil)

;; (defun zenburn--rainbow-turn-on ()
;;   "Maybe also add font-lock keywords for zenburn colors."
;;   (when (and (derived-mode-p 'emacs-lisp-mode)
;;              (or zenburn-add-font-lock-keywords
;;                  (and (buffer-file-name)
;;                       (equal (file-name-nondirectory (buffer-file-name))
;;                              "zenburn-theme.el"))))
;;     (unless zenburn-colors-font-lock-keywords
;;       (setq zenburn-colors-font-lock-keywords
;;             `((,(regexp-opt (mapcar 'car zenburn-default-colors-alist) 'words)
;;                (0 (rainbow-colorize-by-assoc zenburn-default-colors-alist))))))
;;     (font-lock-add-keywords nil zenburn-colors-font-lock-keywords 'end)))

;; (defun zenburn--rainbow-turn-off ()
;;   "Also remove font-lock keywords for zenburn colors."
;;   (font-lock-remove-keywords nil zenburn-colors-font-lock-keywords))

;; (when (fboundp 'advice-add)
;;   (advice-add 'rainbow-turn-on :after  #'zenburn--rainbow-turn-on)
;;   (advice-add 'rainbow-turn-off :after #'zenburn--rainbow-turn-off))

;; ;;; Footer

;; ;;;###autoload
;; (and load-file-name
;;      (boundp 'custom-theme-load-path)
;;      (add-to-list 'custom-theme-load-path
;;                   (file-name-as-directory
;;                    (file-name-directory load-file-name))))

;; (provide-theme 'zenburn)



;; I will now change this into a comment

;; (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.
;;  '(rainbow-delimiters-depth-1-face ((t (:foreground "red" :height 2.0))))
;;  '(rainbow-delimiters-depth-2-face ((t (:foreground "orange" :height 1.8))))
;;  '(rainbow-delimiters-depth-3-face ((t (:foreground "yellow" :height 1.6))))
;;  '(rainbow-delimiters-depth-4-face ((t (:foreground "green" :height 1.4))))
;;  '(rainbow-delimiters-depth-5-face ((t (:foreground "blue" :height 1.2))))
;;  '(rainbow-delimiters-depth-6-face ((t (:foreground "violet" :height 1.1))))
;;  '(rainbow-delimiters-depth-7-face ((t (:foreground "purple" :height 1.0))))
;;  '(rainbow-delimiters-depth-8-face ((t (:foreground "black" :height 0.9))))
;;  '(rainbow-delimiters-unmatched-face ((t (:background "cyan" :height 0.8)))))
;; ;; ;; Local Variables:
;; ;; ;; no-byte-compile: t
;; ;; ;; indent-tabs-mode: nil
;; ;; ;; eval: (when (require 'rainbow-mode nil t) (rainbow-mode 1))
;; ;; ;; End:
;; ;; ;;; zenburn-theme.el ends here




;; I prefer not to have huge parenthesis so I redefined the height

(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.
 '(default ((t (:family "Fira Mono" :foundry "CTDB" :slant normal :weight normal :height 108 :width normal))))
 '(rainbow-delimiters-depth-1-face ((t (:foreground "red" :height 1.0))))
 '(rainbow-delimiters-depth-2-face ((t (:foreground "orange" :height 1.0))))
 '(rainbow-delimiters-depth-3-face ((t (:foreground "yellow" :height 1.0))))
 '(rainbow-delimiters-depth-4-face ((t (:foreground "green" :height 1.0))))
 '(rainbow-delimiters-depth-5-face ((t (:foreground "blue" :height 1.0))))
 '(rainbow-delimiters-depth-6-face ((t (:foreground "violet" :height 1.0))))
 '(rainbow-delimiters-depth-7-face ((t (:foreground "purple" :height 1.0))))
 '(rainbow-delimiters-depth-8-face ((t (:foreground "black" :height 1.0))))
 '(rainbow-delimiters-unmatched-face ((t (:background "cyan" :height 1.0)))))
;; ;; Local Variables:
;; ;; no-byte-compile: t
;; ;; indent-tabs-mode: nil
;; ;; eval: (when (require 'rainbow-mode nil t) (rainbow-mode 1))
;; ;; End:
;; ;;; zenburn-theme.el ends here












;; ====================
;; insert date and time

(defvar current-date-time-format "%a %b %d %H:%M:%S %Z %Y"
  "Format of date to insert with `insert-current-date-time' func
See help of `format-time-string' for possible replacements")

(defvar current-time-format "%a %H:%M:%S"
  "Format of date to insert with `insert-current-time' func.
Note the weekly scope of the command's precision.")

(defun insert-current-date-time ()
  "insert the current date and time into current buffer.
Uses `current-date-time-format' for the formatting the date/time."
       (interactive)
       (insert "==========\n")
;       (insert (let () (comment-start)))
       (insert (format-time-string current-date-time-format (current-time)))
       (insert "\n")
       )

(defun insert-current-time ()
  "insert the current time (1-week scope) into the current buffer."
       (interactive)
       (insert (format-time-string current-time-format (current-time)))
       (insert "\n")
       )

(global-set-key (kbd "C-c C-d") 'insert-current-date-time)
;; (global-set-key "\C-c\C-t" 'insert-current-time)


;; Add time-stamp, see https://www.emacswiki.org/emacs/TimeStamp

  (add-hook 'before-save-hook 'time-stamp)




;; Choose the main theme

;; (load-theme 'alect-dark-alt t)

;; (load-theme 'darktooth t)

;; or

 ;; (load-theme 'afternoon t) ;; very good


 (load-theme 'zenburn t) ;; very good


 ;; (load-theme 'gruvbox-dark-hard t) ;; also good


 ;; (load-theme 'monokai-alt t)


;; make the fringe stand out from the background
;; (setq solarized-distinct-fringe-background t)



;; (load-theme 'solarized-dark t) ;; also good



;; see http://ergoemacs.org/misc/emacs_rainbow-delimiters-mode.html

;; rainbow-delimiters-mode setup, with decreasing bracket size



;;     ;; eshell
;;     '(eshell-prompt ((t (:inherit 'zenburn-primary-1))))
;;     `(eshell-ls-archive ((t (:foreground ,zenburn-red-1 :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))))



;; The line at the bottom should be used to set the default font size but it
;; does not work with lxde on a 4k monitor.

;; (set-face-attribute 'default nil :height 180)



;; (defun rmd-mode ()
;;   "ESS Markdown mode for rmd files"
;;   (interactive)
;;   (setq load-path 
;;     (append (list "path/to/polymode/" "path/to/polymode/modes/")
;;         load-path))
;;   (require 'poly-R)
;;   (require 'poly-markdown)     
;;   (poly-markdown+r-mode))



;; (add-to-list 'auto-mode-alist '("\\.Rmd\\'" . markdown-mode))


(require 'loadhist)
;; (file-dependents (feature-file 'cl))


;; (require 'fira-code-mode)
;; (custom-set-variable 'fira-code-mode-disabled-ligatures '("[]" "#{" "#(" "#_" "#_(" "x")) ;; List of ligatures to turn off

;; ;; Enable fira-code-mode automatically for programming major modes
;; (add-hook 'prog-mode-hook 'fira-code-mode)
;; ;; Or, you can use the global mode instead of adding a hook:
;; (global-fira-code-mode)


;; (require 'fira-code-mode)

;; install use-package from melpa and also fira

;; See https://github.com/jming422/fira-code-mode

;; See also https://stackoverflow.com/a/72922189/2952838

(use-package fira-code-mode
  :if (display-graphic-p)
  :custom (fira-code-mode-disabled-ligatures '("[]" "..." "www" "<-" "#{" "#(" "#_" "#_(" "x")) ;; List of ligatures to turn off
  :hook prog-mode) ;; Enables fira-code-mode automatically for programming major modes)

;; load the library
(require 'quarto-mode)




 ;; (set-frame-font "FiraCode-Regular-Symbol")