huge cleanup - wip

This commit is contained in:
ignuki
2018-09-20 21:19:32 +02:00
parent a83556a9d4
commit 120ea05ea1
34 changed files with 318 additions and 774 deletions

3
.gitignore vendored
View File

@@ -5,4 +5,5 @@ recentf
network-security.data
*.elc
themes/*.elc
*.*~
*.*~
custom.el

View File

@@ -1,12 +0,0 @@
## Dependencies
- `git`
- Emacs v. 25 or higher
## Installation
1. Install dependencies.
2. Clone repo into `$HOME/.emacs.d`.
3. Copy contents of `fonts` directory into `$HOME/.fonts`.
4. Run `fc-cache`.
5. Run `emacs`.
6. `M-x all-the-icons-install-fonts`.
7. Restart Emacs. You can now run Emacs in regular mode or as a daemon.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

286
init.el
View File

@@ -1,37 +1,255 @@
(package-initialize)
(defun byte-compile-init-dir ()
"Byte-compile all your dotfiles."
(interactive)
(byte-recompile-directory user-emacs-directory 0))
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(add-to-list 'package-archives
'("marmalade" . "https://marmalade-repo.org/packages/") t)
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/") t
(add-to-list 'load-path "~/.emacs.d/lisp/" t)
(load "~/.emacs.d/my-packages.el")
(byte-compile-init-dir)
(load "~/.emacs.d/my-loadpackages.elc")
(add-hook 'after-init-hook
'(lambda ()
(load "~/.emacs.d/my-noexternals.elc")
(load "~/.emacs.d/my-setkeys.elc")
(load "~/.emacs.d/my-modeline.elc")
(load "~/.emacs.d/my-linum.elc")
(load "~/.emacs.d/my-themes.elc")
(load "~/.emacs.d/lisp/plsql.elc")
(load "~/.emacs.d/lisp/dockerfile-mode.elc")
(load "~/.emacs.d/my-gnus.elc")))
(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-safe-themes
(quote
("16dd114a84d0aeccc5ad6fd64752a11ea2e841e3853234f19dc02a7b91f5d661" "f2dd097452b79276ce522df2f8aeb37f6d90f504529616aa46122d549910e46d" "21c6b494da74b10ff573fa96b6850651e321282daa17fc9d6c8fbbee96ade005" default)))
'(package-selected-packages
(quote
(jdee web-mode use-package-chords use-package projectile pkg-info less-css-mode ghc fill-column-indicator evil-magit evil epl diminish dash counsel bind-chord base16-theme async all-the-icons))))
(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.
)
(unless package-archive-contents (package-refresh-contents))
(defvar prelude-packages
'(async counsel dracula-theme evil evil-magit fill-column-indicator ghc
git-commit go-mode goto-chg haskell-mode ivy less-css-mode magit
magit-popup pkg-info s swiper undo-tree use-package use-package-chords
web-mode with-editor)
"A list of packages to ensure are installed at launch.")
(dolist (pkg prelude-packages)
(unless (package-installed-p pkg) (package-install pkg)))
(when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(when (fboundp 'windmove-default-keybindings) (windmove-default-keybindings))
(add-to-list 'default-frame-alist '(font . "Iosevka Term 10"))
(set-frame-font "Iosevka Term 10")
(setq frame-title-format
'(buffer-file-name "%f" (dired-directory dired-directory "%b"))
custom-file "~/.emacs.d/custom.el"
auth-source-save-behavior nil
enable-local-variables nil
inhibit-startup-screen t
vc-follow-symlinks t
inhibit-compacting-font-caches 1
mouse-wheel-scroll-amount '(1 ((shift) . 1))
mouse-wheel-progressive-speed nil
mouse-wheel-follow-mouse 't
scroll-step 1
scroll-conservatively 10000
backup-by-copying t
backup-directory-alist '(("." . "~/.saves"))
undo-tree-history-directory-alist '(("." . "~/.undo-tree"))
delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t
backup-directory-alist `((".*" . ,temporary-file-directory))
auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
undo-tree-auto-save-history t
vc-mode 1)
(global-auto-revert-mode 1)
(electric-pair-mode 1)
(show-paren-mode t)
(fringe-mode '(0 . 0))
(global-hl-line-mode 1)
(blink-cursor-mode 0)
(display-time-mode 1)
(load "~/.emacs.d/lisp/plsql.el")
(load "~/.emacs.d/lisp/dockerfile-mode.el")
(add-to-list 'auto-mode-alist
'("\\.\\(p\\(?:k[bg]\\|ls\\)\\|sql\\)\\'" . plsql-mode))
;;(add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode))
(setq-default indent-tabs-mode t)
(setq-default tab-width 8)
(defun c-lineup-arglist-tabs-only (ignored)
"Line up argument lists by tabs, not spaces"
(let* ((anchor (c-langelem-pos c-syntactic-element))
(column (c-langelem-2nd-pos c-syntactic-element))
(offset (- (1+ column) anchor))
(steps (floor offset c-basic-offset)))
(* (max steps 1)
c-basic-offset)))
(add-hook 'c-mode-common-hook
(lambda ()
(c-add-style "libvirt"
'((indent-tabs-mode . nil)
(c-basic-offset . 4)
(c-indent-level . 4)
(c-offsets-alist
(label . 1))))
;; Add kernel style
(c-add-style "linux-tabs-only"
'("linux"
(c-offsets-alist
(arglist-cont-nonempty
c-lineup-gcc-asm-reg
c-lineup-arglist-tabs-only))))))
(defun my-c-mode-hooks ()
(let ((bname (buffer-file-name)))
(cond
((string-match "libvirt/" bname) (c-set-style "libvirt"))
((string-match "datastructures/" bname) (c-set-style "linux"))
((string-match "linux/" bname) (c-set-style "linux-tabs-only"))
((string-match ".*" bname) (c-set-style "linux"))
)))
(add-hook 'sh-mode-hook
(lambda () (setq indent-tabs-mode nil)))
(defun remove-elc-on-save ()
"If you're saving an elisp file, likely the .elc is no longer valid."
(add-hook 'after-save-hook
(lambda ()
(if (file-exists-p (concat buffer-file-name "c"))
(delete-file (concat buffer-file-name "c"))))
nil
t))
(add-hook 'emacs-lisp-mode-hook 'remove-elc-on-save)
(add-hook 'c-mode-hook 'my-c-mode-hooks)
(add-hook 'before-save-hook 'delete-trailing-whitespace)
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
(defun gcm-scroll-down ()
(interactive)
(scroll-up 1))
(defun gcm-scroll-up ()
(interactive)
(scroll-down 1))
(global-set-key [(control down)] 'gcm-scroll-down)
(global-set-key [(control up)] 'gcm-scroll-up)
(global-set-key [(control next)] 'gcm-scroll-down)
(global-set-key [(control prior)] 'gcm-scroll-up)
(require 'use-package)
(use-package ivy
:init
(setq ivy-use-virtual-buffers t
ivy-count-format ""
ivy-display-style nil)
:config
(ivy-mode 1))
(use-package swiper
:bind (("C-s" . swiper)))
(use-package counsel
:bind (("M-x" . counsel-M-x)
("C-x C-f" . counsel-find-file)))
;;(use-package projectile)
;;(use-package cl)
(use-package evil
:init
(setq evil-want-fine-undo t)
;; (add-to-list 'evil-insert-state-modes 'lisp-interaction-mode)
:config
(evil-mode 1))
;;(use-package magit)
(use-package evil-magit
:init
(setq evil-magit-state 'normal))
(use-package fill-column-indicator
:init
(setq fci-rule-column 80))
(use-package haskell-mode
:mode ("\\.hs\\'" . haskell-mode)
:interpreter ("haskell" . haskell-mode))
(use-package go-mode
:mode ("\\.go\\'" . go-mode))
(use-package web-mode
:mode ("\\.html\\'" . web-mode)
:mode ("\\.css\\'" . web-mode)
:mode ("\\.tpl\\.php\\'" . web-mode)
:mode ("\\.[agj]sp\\'" . web-mode)
:mode ("\\.as[cp]x\\'" . web-mode)
:mode ("\\.erb\\'" . web-mode)
:mode ("\\.mustache\\'" . web-mode)
:mode ("\\.djhtml\\'" . web-mode)
:mode ("\\.html?\\'" . web-mode)
:init
(setq web-mode-markup-indent-offset 2
web-mode-code-indent-offset 2
web-mode-css-indent-offset 2))
(use-package less-css-mode
:mode ("\\.less\\'" . less-css-mode))
(use-package yaml-mode
:mode ("\\.yml\\'" . yaml-mode)
:mode ("\\.yaml\\'" . yaml-mode))
(use-package python
:mode ("\\.py\\'" . python-mode)
:interpreter ("python" . python-mode))
;;(use-package sql)
(defvar linum-current-line 1 "Current line number.")
(defvar linum-format-fmt "" " ")
(defvar linum-format "" " ")
(defface linum-current-line
`((t :inherit linum
:foreground "chocolate"
;; :weight bold
))
"Face for displaying the current line number."
:group 'linum)
(defadvice linum-update (before advice-linum-update activate)
"Set the current line."
(setq linum-current-line (line-number-at-pos)))
(unless window-system
(add-hook 'linum-before-numbering-hook
(lambda ()
(setq-local linum-format-fmt
(let ((w (length (number-to-string
(count-lines
(point-min)
(point-max))))))
(concat " %" (number-to-string w) "d "))))))
(defun linum-format-func (line)
(let ((face
(if (= line linum-current-line)
'linum-current-line
'linum)))
(propertize (format linum-format-fmt line) 'face face)))
(unless window-system
(setq linum-format 'linum-format-func))
(add-hook 'find-file-hook (lambda ()
(linum-mode 1)))
(add-hook 'eshell-mode-hook (lambda ()
(linum-mode -1)))

View File

@@ -55,13 +55,27 @@ Each element of the list will be passed as a separate
:type '(repeat string)
:group 'dockerfile)
(defface dockerfile-image-name
'((t (:inherit (font-lock-type-face bold))))
"Face to highlight the base image name after FROM instruction.")
(defface dockerfile-image-alias
'((t (:inherit (font-lock-constant-face bold))))
"Face to highlight the base image alias inf FROM ... AS <alias> construct.")
(defconst dockerfile--from-regex
(rx "from " (group (+? nonl)) (or " " eol) (? "as " (group (1+ nonl)))))
(defvar dockerfile-font-lock-keywords
`(,(cons (rx (or line-start "onbuild ")
(group (or "from" "maintainer" "run" "cmd" "expose" "env" "arg"
"add" "copy" "entrypoint" "volume" "user" "workdir" "onbuild"
"label" "stopsignal" "shell" "healthcheck"))
word-boundary)
font-lock-keyword-face)
(group (or "from" "maintainer" "run" "cmd" "expose" "env" "arg"
"add" "copy" "entrypoint" "volume" "user" "workdir" "onbuild"
"label" "stopsignal" "shell" "healthcheck"))
word-boundary)
font-lock-keyword-face)
(,dockerfile--from-regex
(1 'dockerfile-image-name)
(2 'dockerfile-image-alias nil t))
,@(sh-font-lock-keywords)
,@(sh-font-lock-keywords-2)
,@(sh-font-lock-keywords-1))
@@ -69,7 +83,7 @@ Each element of the list will be passed as a separate
(defvar dockerfile-mode-map
(let ((map (make-sparse-keymap))
(menu-map (make-sparse-keymap)))
(menu-map (make-sparse-keymap)))
(define-key map "\C-c\C-b" 'dockerfile-build-buffer)
(define-key map "\C-c\M-b" 'dockerfile-build-no-cache-buffer)
(define-key map "\C-c\C-z" 'dockerfile-test-function)
@@ -77,13 +91,13 @@ Each element of the list will be passed as a separate
(define-key map [menu-bar dockerfile-mode] (cons "Dockerfile" menu-map))
(define-key menu-map [dfc]
'(menu-item "Comment Region" comment-region
:help "Comment Region"))
:help "Comment Region"))
(define-key menu-map [dfb]
'(menu-item "Build" dockerfile-build-buffer
:help "Send the Dockerfile to docker build"))
:help "Send the Dockerfile to docker build"))
(define-key menu-map [dfb]
'(menu-item "Build without cache" dockerfile-build-no-cache-buffer
:help "Send the Dockerfile to docker build without cache"))
:help "Send the Dockerfile to docker build without cache"))
map))
(defvar dockerfile-mode-syntax-table
@@ -101,10 +115,25 @@ Each element of the list will be passed as a separate
(unless dockerfile-mode-abbrev-table
(define-abbrev-table 'dockerfile-mode-abbrev-table ()))
(defun dockerfile-indent-line-function ()
"Indent lines in a Dockerfile.
Lines beginning with a keyword are ignored, and any others are
indented by one `tab-width'."
(unless (eq (get-text-property (point-at-bol) 'face)
'font-lock-keyword-face)
(save-excursion
(beginning-of-line)
(skip-chars-forward "[ \t]" (point-at-eol))
(unless (equal (point) (point-at-eol)) ; Ignore empty lines.
;; Delete existing whitespace.
(delete-char (- (point-at-bol) (point)))
(indent-to tab-width)))))
(defun dockerfile-build-arg-string ()
"Create a --build-arg string for each element in `dockerfile-build-args'."
(mapconcat (lambda (arg) (concat "--build-arg " (shell-quote-argument arg)))
dockerfile-build-args " "))
dockerfile-build-args " "))
(defun dockerfile-standard-filename (file)
"Convert the FILE name to OS standard.
@@ -136,13 +165,13 @@ If prefix arg NO-CACHE is set, don't cache the image."
(if (stringp image-name)
(compilation-start
(format
"%sdocker build %s -t %s %s -f %s %s"
(if dockerfile-use-sudo "sudo " "")
(if no-cache "--no-cache" "")
(shell-quote-argument image-name)
(dockerfile-build-arg-string)
(shell-quote-argument (dockerfile-standard-filename (buffer-file-name)))
(shell-quote-argument (dockerfile-standard-filename default-directory)))
"%sdocker build %s -t %s %s -f %s %s"
(if dockerfile-use-sudo "sudo " "")
(if no-cache "--no-cache" "")
(shell-quote-argument image-name)
(dockerfile-build-arg-string)
(shell-quote-argument (dockerfile-standard-filename (buffer-file-name)))
(shell-quote-argument (dockerfile-standard-filename default-directory)))
nil
(lambda (_) (format "*docker-build-output: %s *" image-name)))
(print "dockerfile-image-name must be a string, consider surrounding it with double quotes")))
@@ -153,12 +182,28 @@ If prefix arg NO-CACHE is set, don't cache the image."
(interactive (list (dockerfile-read-image-name)))
(dockerfile-build-buffer image-name t))
(defun dockerfile--imenu-function ()
"Find the previous headline from point.
Search for a FROM instruction. If an alias is used this is
returned, otherwise the base image name is used."
(when (re-search-backward dockerfile--from-regex nil t)
(let ((data (match-data)))
(when (match-string 2)
;; we drop the first match group because
;; imenu-generic-expression can only use one offset, so we
;; normalize to `1'.
(set-match-data (list (nth 0 data) (nth 1 data) (nth 4 data) (nth 5 data))))
t)))
;;;###autoload
(define-derived-mode dockerfile-mode prog-mode "Dockerfile"
"A major mode to edit Dockerfiles.
\\{dockerfile-mode-map}
"
(set-syntax-table dockerfile-mode-syntax-table)
(set (make-local-variable 'imenu-generic-expression)
`(("Stage" dockerfile--imenu-function 1)))
(set (make-local-variable 'require-final-newline) mode-require-final-newline)
(set (make-local-variable 'comment-start) "#")
(set (make-local-variable 'comment-end) "")
@@ -166,7 +211,8 @@ If prefix arg NO-CACHE is set, don't cache the image."
(set (make-local-variable 'parse-sexp-ignore-comments) t)
(set (make-local-variable 'font-lock-defaults)
'(dockerfile-font-lock-keywords nil t))
(setq local-abbrev-table dockerfile-mode-abbrev-table))
(setq local-abbrev-table dockerfile-mode-abbrev-table)
(setq indent-line-function #'dockerfile-indent-line-function))
;;;###autoload
(add-to-list 'auto-mode-alist '("Dockerfile\\(?:\\..*\\)?\\'" . dockerfile-mode))

View File

@@ -1,12 +0,0 @@
(setq user-mail-address "inaki694@gmail.com"
user-full-name "Iñaki Domínguez")
(setq gnus-select-method
'(nnimap "gmail"
(nnimap-address "imap.gmail.com") ; it could also be imap.googlemail.com if that's your server.
(nnimap-server-port "imaps")
(nnimap-stream ssl)))
(setq smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 587
gnus-ignored-newsgroups "^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\"]\"[#'()]")

View File

@@ -1,41 +0,0 @@
(defvar linum-current-line 1 "Current line number.")
(defvar linum-format-fmt "" " ")
(defvar linum-format "" " ")
(defface linum-current-line
`((t :inherit linum
:foreground "chocolate"
;; :weight bold
))
"Face for displaying the current line number."
:group 'linum)
(defadvice linum-update (before advice-linum-update activate)
"Set the current line."
(setq linum-current-line (line-number-at-pos)))
(unless window-system
(add-hook 'linum-before-numbering-hook
(lambda ()
(setq-local linum-format-fmt
(let ((w (length (number-to-string
(count-lines
(point-min)
(point-max))))))
(concat " %" (number-to-string w) "d "))))))
(defun linum-format-func (line)
(let ((face
(if (= line linum-current-line)
'linum-current-line
'linum)))
(propertize (format linum-format-fmt line) 'face face)))
(unless window-system
(setq linum-format 'linum-format-func))
(add-hook 'find-file-hook (lambda ()
(linum-mode 1)))
(add-hook 'eshell-mode-hook (lambda ()
(linum-mode -1)))

View File

@@ -1,36 +0,0 @@
(require 'use-package)
(use-package ivy
:config
(setq ivy-use-virtual-buffers t
ivy-count-format ""
ivy-display-style nil)
(ivy-mode 1))
(use-package projectile)
(use-package cl)
(use-package evil
:config
(setq evil-normal-state-tag "N"
evil-insert-state-tag "I"
evil-visual-state-tag "V"
evil-emacs-state-tag "E"
evil-operator-state-tag "O"
evil-motion-state-tag "M"
evil-replace-state-tag "R"
evil-want-fine-undo t )
;; (add-to-list 'evil-insert-state-modes 'lisp-interaction-mode)
(evil-mode 1))
(use-package magit)
(use-package evil-magit
:config
(setq evil-magit-state 'normal))
(use-package fill-column-indicator
:config
(setq fci-rule-column 80))
(use-package all-the-icons)
(use-package haskell-mode)
(use-package go-mode)
(use-package web-mode)
(use-package less-css-mode)
(use-package sql)

View File

@@ -1,177 +0,0 @@
(require 'evil)
(require 'magit)
(require 'all-the-icons)
(defvar powerline-current-window nil)
(defun update-current-window (windows)
(when (not (minibuffer-window-active-p (frame-selected-window)))
(setq powerline-current-window (selected-window))))
(add-function :before pre-redisplay-function 'update-current-window)
(defun evil-tag-color ()
(if (eq (get-buffer-window) powerline-current-window)
(cond ((evil-normal-state-p) "#5c3f56")
((evil-visual-state-p) "#446963")
((evil-insert-state-p) "#ac4142")
((evil-emacs-state-p) "SeaGreen")
((evil-operator-state-p) "SeaGreen")
((evil-motion-state-p) "SeaGreen")
((evil-replace-state-p) "maroon"))
(face-background 'mode-line-inactive)))
(defun branch-tag-bg-color ()
(if (eq (get-buffer-window) powerline-current-window)
"gainsboro"
(face-background 'mode-line-inactive)))
(defun branch-tag-fg-color ()
(if (eq (get-buffer-window) powerline-current-window)
"#181818"
(face-foreground 'mode-line-inactive)))
(defun time-tag-bg-color ()
(if (eq (get-buffer-window) powerline-current-window)
"ivory"
(face-background 'mode-line-inactive)))
(defun time-tag-fg-color ()
(if (eq (get-buffer-window) powerline-current-window)
"#181818"
(face-foreground 'mode-line-inactive)))
(defun fancy-mode-line-render (left center right &optional lpad rpad)
"Return a string the width of the current window with
LEFT, CENTER, and RIGHT spaced out accordingly, LPAD and RPAD,
can be used to add a number of spaces to the front and back of the string."
(condition-case err
(let* ((left (if lpad (concat (make-string lpad ?\s) left) left))
(right (if rpad (concat right (make-string rpad ?\s)) right))
(width (apply '+ (window-width)
(let ((m (window-margins)))
(list (or (car m) 0) (or (cdr m) 0)))))
(total-length (+ (length left) (length center) (length right) 0)))
(when (> total-length width) (setq left "" right ""))
(let* ((left-space (/ (- width (length center)) 2))
(right-space (- width left-space (length center)))
(lspaces (max (- left-space (length left)) 1))
(rspaces (max (- right-space (length right)) 0)))
(concat left (make-string lspaces ?\s)
center
(make-string rspaces ?\s)
right)))
(error (format "[%s]: (%s) (%s) (%s)" err left center right))))
(defun evil-mode-state ()
(let ((str (cond ((evil-normal-state-p) (format " NORMAL " ))
((evil-visual-state-p) (format " VISUAL " ))
((evil-insert-state-p) (format " INSERT " ))
((evil-emacs-state-p) (format " EMACS " ))
((evil-operator-state-p) (format " OPERATOR " ))
((evil-motion-state-p) (format " MOTION " ))
((evil-replace-state-p) (format " REPLACE " )))))
(propertize
str
'face `(:height 1.0 :background ,(evil-tag-color) :weight bold))))
(defun vc-mode-branch-state ()
(let ((bufname (buffer-file-name (current-buffer))))
(when bufname
(when (magit-get-current-branch)
(propertize
(format "  %s " (magit-get-current-branch))
'face `(:weight bold
:foreground ,(branch-tag-fg-color)
:background ,(branch-tag-bg-color)))))))
(defun powerline-modified ()
(let* ((config-alist
'(("*" all-the-icons-faicon-family
all-the-icons-faicon "chain-broken" :height 1.2 :v-adjust -0.0)
("-" all-the-icons-faicon-family
all-the-icons-faicon "link" :height 1.2 :v-adjust -0.0)
("%" all-the-icons-octicon-family
all-the-icons-octicon "lock" :height 1.2 :v-adjust 0.1)))
(result (cdr (assoc (format-mode-line "%*") config-alist))))
(let ((res
(propertize
(apply (cadr result) (cddr result))
'face
`(:background ,(evil-tag-color) :family ,(funcall (car result))))))
(propertize
(format " %s" res)
'face
`(:background ,(evil-tag-color) :family ,(funcall (car result)))))))
(defun custom-modeline-mode-icon ()
(let ((icon (all-the-icons-icon-for-buffer)))
(if (not (symbolp icon)) ;; This implies it's the major mode
(format " %s"
(propertize
(all-the-icons-icon-for-buffer)
'face
`(:family ,(all-the-icons-icon-family-for-buffer))
'display '(raise 0.0)))
(format " %s"
(propertize
""
'face
`(:family ,(all-the-icons-faicon-family))
'display '(raise 0.0))))))
(defun line-count-line ()
(let* ((bg (time-tag-bg-color))
(fg (time-tag-fg-color)))
(concat
(propertize
(format " %%l/%d "
(count-lines (point-min) (point-max)))
'face `(:background ,bg :foreground ,fg)))))
(defun powerline-time ()
(let* ((hour (string-to-number (format-time-string "%I")))
(bg (time-tag-bg-color))
(fg (time-tag-fg-color)))
(concat
(propertize
(format-time-string " %H:%M ")
'face
`(:height 1.0 :background ,bg :foreground ,fg))
(propertize
"·"
'face `(:height 1.0 :background ,bg :foreground ,fg)))))
(defvar separator-left "")
(defvar separator-right "")
;; (defvar separator-left
;; (propertize
;; ""
;; 'face `(:height 1.1 :foreground "#86261c") 'display '(raise -0.0)))
;; (defvar separator-right
;; (propertize
;; " "
;; 'face `(:height 1.1 :foreground "#86261c") 'display '(raise -0.0)))
(setq-default mode-line-format
(list
'((:eval (fancy-mode-line-render
;; left
(format-mode-line
(concat
(powerline-modified)
(evil-mode-state)
(vc-mode-branch-state)
(custom-modeline-mode-icon) ;; %m
" %b "))
;;center
""
;; right
(format-mode-line
(concat
separator-left
;; (format-time-string "%H:%M ")
(powerline-time)
(line-count-line)))
0 0)))))

View File

@@ -1,137 +0,0 @@
(when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(when (fboundp 'windmove-default-keybindings)
(windmove-default-keybindings))
(add-to-list
'default-frame-alist
'(font . "Iosevka Term 10"))
(set-frame-font
"Iosevka Term 10")
(setq frame-title-format
'(buffer-file-name "%f" (dired-directory dired-directory "%b"))
;; (setq debug-on-error t)
auth-source-save-behavior nil
send-mail-function (quote smtpmail-send-it)
enable-local-variables nil
inhibit-startup-screen t
vc-follow-symlinks t
inhibit-compacting-font-caches 1
mouse-wheel-scroll-amount '(1 ((shift) . 1)) ;; one line at a time
mouse-wheel-progressive-speed nil ;; don't accelerate scrolling
mouse-wheel-follow-mouse 't ;; scroll window under mouse
scroll-step 1
scroll-conservatively 10000 ;; keyboard scroll one line at a time
backup-by-copying t ; don't clobber symlinks
backup-directory-alist '(("." . "~/.saves")) ; don't litter my fs tree
undo-tree-history-directory-alist '(("." . "~/.undo-tree"))
delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t ; use versioned backups
backup-directory-alist `((".*" . ,temporary-file-directory))
auto-save-file-name-transforms `((".*" ,temporary-file-directory t))
undo-tree-auto-save-history t
vc-mode 1
jdee-server-dir "/Users/you/.emacs.d/jdee-server")
(global-auto-revert-mode 1)
(electric-pair-mode 1)
(show-paren-mode t)
(fringe-mode '(0 . 0))
(global-hl-line-mode 1)
(blink-cursor-mode 0)
(display-time-mode 1)
(add-to-list 'auto-mode-alist '("\\.h\\'" . c-mode))
(add-to-list 'auto-mode-alist '("\\.zsh\\'" . sh-mode))
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
(add-to-list 'auto-mode-alist
'("\\.\\(p\\(?:k[bg]\\|ls\\)\\|sql\\)\\'" . plsql-mode))
(add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode))
(defun my-web-mode-hook ()
"Hooks for Web mode."
(setq web-mode-markup-indent-offset 2
web-mode-code-indent-offset 2
web-mode-css-indent-offset 2))
(setq-default indent-tabs-mode t)
(setq-default tab-width 8)
(defun c-lineup-arglist-tabs-only (ignored)
"Line up argument lists by tabs, not spaces"
(let* ((anchor (c-langelem-pos c-syntactic-element))
(column (c-langelem-2nd-pos c-syntactic-element))
(offset (- (1+ column) anchor))
(steps (floor offset c-basic-offset)))
(* (max steps 1)
c-basic-offset)))
(add-hook 'c-mode-common-hook
(lambda ()
(c-add-style "libvirt"
'((indent-tabs-mode . nil)
(c-basic-offset . 4)
(c-indent-level . 4)
(c-offsets-alist
(label . 1))))
;; Add kernel style
(c-add-style "linux-tabs-only"
'("linux"
(c-offsets-alist
(arglist-cont-nonempty
c-lineup-gcc-asm-reg
c-lineup-arglist-tabs-only))))))
(defun my-c-mode-hooks ()
(let ((bname (buffer-file-name)))
(cond
((string-match "libvirt/" bname) (c-set-style "libvirt"))
((string-match "datastructures/" bname) (c-set-style "linux"))
((string-match "linux/" bname) (c-set-style "linux-tabs-only"))
((string-match ".*" bname) (c-set-style "linux"))
)))
(add-hook 'sh-mode-hook
(lambda () (setq indent-tabs-mode nil)))
(defun remove-elc-on-save ()
"If you're saving an elisp file, likely the .elc is no longer valid."
(add-hook 'after-save-hook
(lambda ()
(if (file-exists-p (concat buffer-file-name "c"))
(delete-file (concat buffer-file-name "c"))))
nil
t))
(add-hook 'emacs-lisp-mode-hook 'remove-elc-on-save)
(add-hook 'c-mode-hook 'my-c-mode-hooks)
(add-hook 'web-mode-hook 'my-web-mode-hook)
(add-hook 'before-save-hook 'delete-trailing-whitespace)
(require 'yaml-mode)
(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))
(add-hook 'eshell-mode-hook (lambda ()
(setq-local global-hl-line-mode nil)))
(add-hook 'term-mode-hook (lambda ()
(setq-local global-hl-line-mode nil)))
(defadvice term-handle-exit
(after term-kill-buffer-on-exit activate)
(kill-buffer))
(defun my-term-paste (&optional string)
(interactive)
(process-send-string
(get-buffer-process (current-buffer))
(if string string (current-kill 0))))

View File

@@ -1,21 +0,0 @@
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/") t)
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/") t
(add-to-list 'load-path "~/.emacs.d/lisp/" t)
(unless package-archive-contents
(package-refresh-contents))
(defvar prelude-packages
'(all-the-icons async base16-theme bind-chord bind-key counsel dash diminish
epl evil evil-magit fill-column-indicator ghc git-commit go-mode
goto-chg haskell-mode ivy jdee key-chord less-css-mode magit magit-popup
pkg-info projectile swiper undo-tree use-package use-package-chords
web-mode with-editor)
"A list of packages to ensure are installed at launch.")
(dolist (pkg prelude-packages)
(unless (package-installed-p pkg)
(package-install pkg)))

View File

@@ -1,29 +0,0 @@
(global-set-key "\C-s" 'swiper)
(global-set-key (kbd "C-c C-r") 'ivy-resume)
(global-set-key (kbd "<f6>") 'ivy-resume)
(global-set-key (kbd "M-x") 'counsel-M-x)
(global-set-key (kbd "C-x C-f") 'counsel-find-file)
(global-set-key (kbd "<f1> f") 'counsel-describe-function)
(global-set-key (kbd "<f1> v") 'counsel-describe-variable)
(global-set-key (kbd "<f1> l") 'counsel-load-library)
(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
(global-set-key (kbd "<f2> u") 'counsel-unicode-char)
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
(global-set-key [f8] 'neotree-toggle)
(defun gcm-scroll-down ()
(interactive)
(scroll-up 1))
(defun gcm-scroll-up ()
(interactive)
(scroll-down 1))
(global-set-key [(control down)] 'gcm-scroll-down)
(global-set-key [(control up)] 'gcm-scroll-up)
(global-set-key [(control next)] 'gcm-scroll-down)
(global-set-key [(control prior)] 'gcm-scroll-up)

View File

@@ -1,56 +0,0 @@
(defvar my:theme 'base16-onedark)
(defvar my:theme-window-loaded nil)
(defvar my:theme-terminal-loaded nil)
(defun setcolors ()
(load-theme my:theme t)
(custom-theme-set-faces
my:theme
'(default ((t (:background "#161718" :foreground "#d0d0d0"))))
'(hl-line ((t (:background "#282A2C"))))
'(highlight ((t (:background "#282A2C"))))
'(linum ((t (:underline nil :background "#232832" :foreground "#a2a3b4"
:weight bold))))
'(mode-line ((t (:background "#181819" :foreground "#b8b8b8" :box nil
:family "Iosevka Term" :height 100))))
'(mode-line-buffer-id ((t (:foreground "#a1b56c" :family "Iosevka Term"
:height 100))))
'(mode-line-highlight ((t (:foreground "#ba8baf" :box nil :weight bold
:family "Iosevka Term"
:height 100))))
'(mode-line-inactive ((t (:background "#282c34" :foreground "#585858"
:box nil :underline nil
:family "Iosevka Term" :height 100))))
)
)
(if (daemonp)
(add-hook
'after-make-frame-functions
(lambda (frame)
(select-frame frame)
(when (window-system frame)
(set-frame-parameter
(selected-frame) 'internal-border-width 0)
(unless my:theme-window-loaded
(if my:theme-terminal-loaded
(enable-theme my:theme)
(setcolors))
(setq my:theme-window-loaded t))
(unless my:theme-terminal-loaded
(if my:theme-window-loaded
(enable-theme my:theme)
(setcolors))
(setq my:theme-terminal-loaded t)))))
(progn
(setcolors)
(if (display-graphic-p)
(setq my:theme-window-loaded t)
(setq my:theme-terminal-loaded t)))
(set-frame-parameter (selected-frame) 'internal-border-width 0))
(add-hook 'before-make-frame-hook
#'(lambda ()
(add-to-list 'default-frame-alist '(height . 42))
(add-to-list 'default-frame-alist '(width . 100))))

View File

@@ -1,200 +0,0 @@
(eval-when-compile
(require 'cl-lib))
(unless (>= emacs-major-version 24)
(error "Requires Emacs 24 or later"))
(defcustom nrwo-contrast 'medium
"Contrast level for the theme background."
:options '(soft medium hard))
(deftheme nothing-rhymes-with-orange "Test")
(let* ((nrwo-dark0_hard (if (display-graphic-p) "#181818" "color-234"))
(nrwo-dark0 (if (display-graphic-p) "#282828" "color-235"))
(nrwo-dark0_soft (if (display-graphic-p) "#32302f" "color-236"))
(nrwo-dark1 (if (display-graphic-p) "#3c3836" "color-237"))
(nrwo-dark2 (if (display-graphic-p) "#504945" "color-239"))
(nrwo-dark3 (if (display-graphic-p) "#665c54" "color-241"))
(nrwo-dark4 (if (display-graphic-p) "#7c6f64" "color-243"))
(nrwo-medium (if (display-graphic-p) "#928374" "color-245")) ;; or 244
(nrwo-light0_hard (if (display-graphic-p) "#ffffc8" "color-230"))
(nrwo-light0 (if (display-graphic-p) "#ede4b1" "color-229"))
(nrwo-light0_soft (if (display-graphic-p) "#f4e8ba" "color-228"))
(nrwo-light1 (if (display-graphic-p) "#ebdbb2" "color-223"))
(nrwo-light2 (if (display-graphic-p) "#d5c4a1" "color-250"))
(nrwo-light3 (if (display-graphic-p) "#bdae93" "color-248"))
(nrwo-light4 (if (display-graphic-p) "#a89984" "color-246"))
(nrwo-color0 (if (display-graphic-p) "#262322" "color-0"))
(nrwo-color1 (if (display-graphic-p) "#665752" "color-1"))
(nrwo-color2 (if (display-graphic-p) "#75645e" "color-2"))
(nrwo-color3 (if (display-graphic-p) "#85716a" "color-3"))
(nrwo-color4 (if (display-graphic-p) "#947e76" "color-4"))
(nrwo-color5 (if (display-graphic-p) "#a38b83" "color-5"))
(nrwo-color6 (if (display-graphic-p) "#b89c93" "color-6"))
(nrwo-color7 (if (display-graphic-p) "#ede4b1" "color-7"))
(nrwo-color8 (if (display-graphic-p) "#524b49" "color-8"))
(nrwo-color9 (if (display-graphic-p) "#ff6633" "color-9"))
(nrwo-color10 (if (display-graphic-p) "#bf4c26" "color-10"))
(nrwo-color11 (if (display-graphic-p) "#803319" "color-11"))
(nrwo-color12 (if (display-graphic-p) "#80ecff" "color-12"))
(nrwo-color13 (if (display-graphic-p) "#60b4bf" "color-13"))
(nrwo-color14 (if (display-graphic-p) "#406d80" "color-14"))
(nrwo-color15 (if (display-graphic-p) "#e8d7d1" "color-15"))
(nrwo-delimiter-one (if (display-graphic-p) "#458588" "color-30"))
(nrwo-delimiter-two (if (display-graphic-p) "#b16286" "color-168"))
(nrwo-delimiter-three (if (display-graphic-p) "#8ec07c" "color-108"))
(nrwo-delimiter-four (if (display-graphic-p) "#d65d0e" "color-166"))
(nrwo-white (if (display-graphic-p) "#FFFFFF" "white"))
(nrwo-black (if (display-graphic-p) "#000000" "black"))
(nrwo-sienna (if (display-graphic-p) "#DD6F48" "sienna"))
(nrwo-darkslategray4 (if (display-graphic-p) "#528B8B" "DarkSlateGray4"))
(nrwo-lightblue4 (if (display-graphic-p) "#66999D" "LightBlue4"))
(nrwo-burlywood4 (if (display-graphic-p) "#BBAA97" "burlywood4"))
(nrwo-aquamarine4 (if (display-graphic-p) "#83A598" "aquamarine4"))
(nrwo-turquoise4 (if (display-graphic-p) "#61ACBB" "turquoise4"))
(nrwo-bg nrwo-dark0_hard))
(custom-theme-set-faces
'nothing-rhymes-with-orange
;; UI
`(default ((t (:background ,nrwo-bg :foreground ,nrwo-light0))))
`(cursor ((t (:background ,nrwo-light0))))
`(mode-line ((t (:box nil :background ,nrwo-dark0 :foreground "ivory" :font "Iosevka Term-10"))))
`(mode-line-inactive ((t (:box nil :background ,nrwo-dark1 :foreground ,nrwo-light4 :font "Iosevka Term-10"))))
`(fringe ((t (:background ,nrwo-bg))))
`(linum ((t (:background ,nrwo-bg :foreground ,nrwo-dark4))))
`(hl-line ((t (:background ,nrwo-color0))))
`(region ((t (:background ,nrwo-dark2)))) ;;selection
`(secondary-selection ((t (:background ,nrwo-dark1))))
`(minibuffer-prompt ((t (:background ,nrwo-bg :foreground ,nrwo-color4 t))))
`(vertical-border ((t (:foreground ,nrwo-dark2))))
`(link ((t (:foreground ,nrwo-color7 :underline t))))
`(shadow ((t (:foreground ,nrwo-dark4))))
;; Built-in syntax
`(font-lock-builtin-face ((t (:foreground ,nrwo-color9 t))))
`(font-lock-constant-face ((t (:foreground ,nrwo-color10 t))))
`(font-lock-comment-face ((t (:foreground ,nrwo-dark4))))
`(font-lock-function-name-face ((t (:foreground ,nrwo-color15 ))))
`(font-lock-keyword-face ((t (:foreground ,nrwo-color10))))
`(font-lock-string-face ((t (:foreground ,nrwo-color5))))
`(font-lock-variable-name-face ((t (:foreground ,nrwo-color9))))
`(font-lock-type-face ((t (:foreground ,nrwo-color12))))
`(font-lock-warning-face ((t (:foreground ,nrwo-color15 t))))
`(neo-dir-link-face ((t (:foreground ,nrwo-color10))))
`(neo-root-dir-face ((t (:foreground ,nrwo-dark4))))
;; whitespace-mode
`(whitespace-space ((t (:background ,nrwo-bg :foreground ,nrwo-dark4))))
`(whitespace-hspace ((t (:background ,nrwo-bg :foreground ,nrwo-dark4))))
`(whitespace-tab ((t (:background ,nrwo-bg :foreground ,nrwo-dark4))))
`(whitespace-newline ((t (:background ,nrwo-bg :foreground ,nrwo-dark4))))
`(whitespace-trailing ((t (:background ,nrwo-dark1 :foreground ,nrwo-color3))))
`(whitespace-line ((t (:background ,nrwo-dark1 :foreground ,nrwo-color3))))
`(whitespace-space-before-tab ((t (:background ,nrwo-bg :foreground ,nrwo-dark4))))
`(whitespace-indentation ((t (:background ,nrwo-bg :foreground ,nrwo-dark4))))
`(whitespace-empty ((t (:background nil :foreground nil))))
`(whitespace-space-after-tab ((t (:background ,nrwo-bg :foreground ,nrwo-dark4))))
;; RainbowDelimiters
`(rainbow-delimiters-depth-1-face ((t (:foreground ,nrwo-delimiter-one))))
`(rainbow-delimiters-depth-2-face ((t (:foreground ,nrwo-delimiter-two))))
`(rainbow-delimiters-depth-3-face ((t (:foreground ,nrwo-delimiter-three))))
`(rainbow-delimiters-depth-4-face ((t (:foreground ,nrwo-delimiter-four))))
`(rainbow-delimiters-depth-5-face ((t (:foreground ,nrwo-delimiter-one))))
`(rainbow-delimiters-depth-6-face ((t (:foreground ,nrwo-delimiter-two))))
`(rainbow-delimiters-depth-7-face ((t (:foreground ,nrwo-delimiter-three))))
`(rainbow-delimiters-depth-8-face ((t (:foreground ,nrwo-delimiter-four))))
`(rainbow-delimiters-depth-9-face ((t (:foreground ,nrwo-delimiter-one))))
`(rainbow-delimiters-depth-10-face ((t (:foreground ,nrwo-delimiter-two))))
`(rainbow-delimiters-depth-11-face ((t (:foreground ,nrwo-delimiter-three))))
`(rainbow-delimiters-depth-12-face ((t (:foreground ,nrwo-delimiter-four))))
`(rainbow-delimiters-unmatched-face ((t (:background nil :foreground ,nrwo-light0))))
;; linum-relative
`(linum-relative-current-face ((t (:background ,nrwo-dark1 :foreground ,nrwo-light4))))
;; Highlight indentation mode
`(highlight-indentation-current-column-face ((t (:background ,nrwo-dark2 ))))
`(highlight-indentation-face ((t (:background ,nrwo-dark1 ))))
;; Smartparens
`(sp-pair-overlay-face ((t (:background ,nrwo-dark2))))
;`(sp-wrap-overlay-face ((t (:inherit sp-wrap-overlay-face))))
;`(sp-wrap-tag-overlay-face ((t (:inherit sp-wrap-overlay-face))))
`(sp-show-pair-match-face ((t (:background ,nrwo-dark2)))) ;; Pair tags highlight
`(sp-show-pair-mismatch-face ((t (:background ,nrwo-color15)))) ;; Highlight for bracket without pair
;; elscreen
`(elscreen-tab-background-face ((t (:box nil :background ,nrwo-bg)))) ;; Tab bar, not the tabs
`(elscreen-tab-control-face ((t (:box nil :background ,nrwo-dark2 :foreground ,nrwo-color15 :underline nil)))) ;; The controls
`(elscreen-tab-current-screen-face ((t (:box nil :background ,nrwo-dark4 :foreground ,nrwo-dark0)))) ;; Current tab
`(elscreen-tab-other-screen-face ((t (:box nil :background ,nrwo-dark2 :foreground ,nrwo-light4 :underline nil)))) ;; Inactive tab
;; ag (The Silver Searcher)
`(ag-hit-face ((t (:foreground ,nrwo-color14))))
`(ag-match-face ((t (:foreground ,nrwo-color15))))
;; Diffs
`(diff-changed ((t (:background ,nrwo-color0 :foreground ,nrwo-light1))))
`(diff-added ((t (:background nil :foreground ,nrwo-color12))))
`(diff-removed ((t (:background nil :foreground ,nrwo-color9))))
`(diff-indicator-changed ((t (:inherit diff-changed))))
`(diff-indicator-added ((t (:inherit diff-added))))
`(diff-indicator-removed ((t (:inherit diff-removed))))
`(js2-warning ((t (:underline (:color ,nrwo-color9 :style wave)))))
`(js2-error ((t (:underline (:color ,nrwo-color15 :style wave)))))
`(js2-external-variable ((t (:underline (:color ,nrwo-color10 :style wave)))))
`(js2-jsdoc-tag ((t (:background nil :foreground ,nrwo-medium ))))
`(js2-jsdoc-type ((t (:background nil :foreground ,nrwo-light4 ))))
`(js2-jsdoc-value ((t (:background nil :foreground ,nrwo-light3 ))))
`(js2-function-param ((t (:background nil :foreground ,nrwo-color12 ))))
`(js2-function-call ((t (:background nil :foreground ,nrwo-color10 ))))
`(js2-instance-member ((t (:background nil :foreground ,nrwo-color9 ))))
`(js2-private-member ((t (:background nil :foreground ,nrwo-color11 ))))
`(js2-private-function-call ((t (:background nil :foreground ,nrwo-color14 ))))
`(js2-jsdoc-html-tag-name ((t (:background nil :foreground ,nrwo-light4 ))))
`(js2-jsdoc-html-tag-delimiter ((t (:background nil :foreground ,nrwo-light3 ))))
;; popup
`(popup-face ((t (:foreground ,nrwo-light1 :background ,nrwo-dark1))))
`(popup-menu-mouse-face ((t (:foreground ,nrwo-light0 :background ,nrwo-color2))))
`(popup-menu-selection-face ((t (:foreground ,nrwo-light0 :background ,nrwo-color2))))
`(popup-tip-face ((t (:foreground ,nrwo-light2 :background ,nrwo-dark2))))
;; message-mode
`(message-header-to ((t (:inherit font-lock-variable-name-face))))
`(message-header-cc ((t (:inherit font-lock-variable-name-face))))
`(message-header-subject ((t (:foreground ,nrwo-color10 ))))
`(message-header-newsgroups ((t (:foreground ,nrwo-color9 ))))
`(message-header-other ((t (:inherit font-lock-variable-name-face))))
`(message-header-name ((t (:inherit font-lock-keyword-face))))
`(message-header-xheader ((t (:foreground ,nrwo-color12))))
`(message-separator ((t (:inherit font-lock-comment-face))))
`(message-cited-text ((t (:inherit font-lock-comment-face))))
`(message-mml ((t (:foreground ,nrwo-color1 ))))
)
)
;;;###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 'nothing-rhymes-with-orange)
;; Local Variables:
;; eval: (when (fboundp 'rainbow-mode) (rainbow-mode +1))
;; End:
;;; nrwo-theme.el ends here