TOP
Emacs init.el
katsue-emacs26-color-theme.zip
EvilのNormalステート。

EvilのInsertステート。

EvilのVisualステート。

;; このinit.elをUbuntuで使う場合。
;; sudo apt install emacs
;; sudo apt install gauche
;; sudo apt install elpa-evil
;; sudo apt install elpa-powerline
;; 以上のコマンドでemacs, gauche, evil, powerlineをインストールしてください。
;;-----------------------------------------------------------------------------
;; Gauche のデフォルトエンコーディングに合わせます。
;; Gauche のデフォルトエンコーディングがeuc-jp の時はutf-8 をeuc-jp に
;; してください。
(modify-coding-system-alist 'process "gosh" '(utf-8 . utf-8))
;; gosh インタプリタのパスに合わせます。-i は対話モードを意味します。
(setq scheme-program-name "gosh -i")
;; scheme モードとrun-scheme モードにcmuscheme.el を使用します。
(autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t)
(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t)
;; ウィンドウを2 つに分け、一方でgosh インタプリタを実行するコマンドを定義します。
(defun scheme-other-window ()
"Run scheme on other window"
(interactive)
(switch-to-buffer-other-window
(get-buffer-create "*scheme*"))
(run-scheme scheme-program-name))
;; そのコマンドをCtrl-cs で呼び出します。
(define-key global-map
"\C-cs" 'scheme-other-window)
;; 直前/ 直後の括弧に対応する括弧を光らせます。
(show-paren-mode)
;; 以下はインデントの定義です。
(put 'and-let* 'scheme-indent-function 1)
(put 'begin0 'scheme-indent-function 0)
(put 'call-with-client-socket 'scheme-indent-function 1)
(put 'call-with-input-conversion 'scheme-indent-function 1)
(put 'call-with-input-file 'scheme-indent-function 1)
(put 'call-with-input-process 'scheme-indent-function 1)
(put 'call-with-input-string 'scheme-indent-function 1)
(put 'call-with-iterator 'scheme-indent-function 1)
(put 'call-with-output-conversion 'scheme-indent-function 1)
(put 'call-with-output-file 'scheme-indent-function 1)
(put 'call-with-output-string 'scheme-indent-function 0)
(put 'call-with-temporary-file 'scheme-indent-function 1)
(put 'call-with-values 'scheme-indent-function 1)
(put 'dolist 'scheme-indent-function 1)
(put 'dotimes 'scheme-indent-function 1)
(put 'if-match 'scheme-indent-function 2)
(put 'let*-values 'scheme-indent-function 1)
(put 'let-args 'scheme-indent-function 2)
(put 'let-keywords* 'scheme-indent-function 2)
(put 'let-match 'scheme-indent-function 2)
(put 'let-optionals* 'scheme-indent-function 2)
(put 'let-syntax 'scheme-indent-function 1)
(put 'let-values 'scheme-indent-function 1)
(put 'let/cc 'scheme-indent-function 1)
(put 'let1 'scheme-indent-function 2)
(put 'letrec-syntax 'scheme-indent-function 1)
(put 'make 'scheme-indent-function 1)
(put 'multiple-value-bind 'scheme-indent-function 2)
(put 'match 'scheme-indent-function 1)
(put 'parameterize 'scheme-indent-function 1)
(put 'parse-options 'scheme-indent-function 1)
(put 'receive 'scheme-indent-function 2)
(put 'rxmatch-case 'scheme-indent-function 1)
(put 'rxmatch-cond 'scheme-indent-function 0)
(put 'rxmatch-if 'scheme-indent-function 2)
(put 'rxmatch-let 'scheme-indent-function 2)
(put 'syntax-rules 'scheme-indent-function 1)
(put 'unless 'scheme-indent-function 1)
(put 'until 'scheme-indent-function 1)
(put 'when 'scheme-indent-function 1)
(put 'while 'scheme-indent-function 1)
(put 'with-builder 'scheme-indent-function 1)
(put 'with-error-handler 'scheme-indent-function 0)
(put 'with-error-to-port 'scheme-indent-function 1)
(put 'with-input-conversion 'scheme-indent-function 1)
(put 'with-input-from-port 'scheme-indent-function 1)
(put 'with-input-from-process 'scheme-indent-function 1)
(put 'with-input-from-string 'scheme-indent-function 1)
(put 'with-iterator 'scheme-indent-function 1)
(put 'with-module 'scheme-indent-function 1)
(put 'with-output-conversion 'scheme-indent-function 1)
(put 'with-output-to-port 'scheme-indent-function 1)
(put 'with-output-to-process 'scheme-indent-function 1)
(put 'with-output-to-string 'scheme-indent-function 1)
(put 'with-port-locking 'scheme-indent-function 1)
(put 'with-string-io 'scheme-indent-function 1)
(put 'with-time-counter 'scheme-indent-function 1)
(put 'with-signal-handlers 'scheme-indent-function 1)
(put 'with-locking-mutex 'scheme-indent-function 1)
(put 'guard 'scheme-indent-function 1)
;; (global-font-lock-mode t)
;;-----------------------------------------------------------------------------
(setq mouse-wheel-scroll-amount '(1 ((shift) . 5)))
;;-----------------------------------------------------------------------------
(setq make-backup-files nil)
(setq auto-save-default nil)
;;-----------------------------------------------------------------------------
(setq initial-scratch-message
"#!/usr/bin/env gosh\n\n(define (main args)\n ()\n 0)\n\n;; : 勝沼かつえ かつぬまかつえ カツヌマカツエ\n")
(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)
;;-----------------------------------------------------------------------------
(setq-default indent-tabs-mode nil)
;; (setq-default tab-width 1)
(add-hook 'scheme-mode-hook
'(lambda () (setq tab-width 1)))
(add-hook 'lisp-mode-hook
'(lambda () (setq tab-width 1)))
(add-hook 'elisp-mode-hook
'(lambda () (setq tab-width 1)))
(add-hook 'c++-mode-hook
'(lambda () (setq tab-width 1)))
(add-hook 'c-mode-hook
'(lambda () (setq tab-width 1)))
;;-----------------------------------------------------------------------------
;; 勝沼かつえカラーテーマ。
(deftheme katsue-katsunuma1
"Katsue Katsunuma1 theme.")
(let ((class '((class color) (min-colors 89))))
(custom-theme-set-faces
'katsue-katsunuma1
`(default
((,class (:background "#e7e7e7" :foreground "#223569"))))
`(font-lock-comment-face ((,class (:foreground "Grey52"))))
`(font-lock-string-face ((,class (:foreground "darkgreen"))))
`(region ((,class (:background "dark cyan" :foreground "cyan"))))
`(show-paren-match
((,class (:background "Aquamarine" :foreground "SlateBlue"))))
`(show-paren-mismatch
((,class (:background "red1" :foreground "white")))) ))
(provide-theme 'katsue-katsunuma1)
;;-----------------------------------------------------------------------------
;; 勝沼かつえカラーテーマ。
(deftheme katsue-katsunuma2
"Katsue Katsunuma2 theme.")
(let ((class '((class color) (min-colors 89))))
(custom-theme-set-faces
'katsue-katsunuma2
`(default
((,class (:background "Grey69" :foreground "#223569"))))
`(font-lock-comment-face ((,class (:foreground "Grey52"))))
`(font-lock-string-face ((,class (:foreground "darkgreen"))))
`(region ((,class (:background "dark cyan" :foreground "cyan"))))
`(show-paren-match
((,class (:background "Aquamarine" :foreground "SlateBlue"))))
`(show-paren-mismatch
((,class (:background "red1" :foreground "white")))) ))
(provide-theme 'katsue-katsunuma2)
;;-----------------------------------------------------------------------------
(custom-set-variables
'(custom-enabled-themes '(katsue-katsunuma2))
'(inhibit-startup-screen t)
'(ispell-dictionary nil)
)
(custom-set-faces
'(mode-line ((t (:background "#223569" :foreground "white"))))
'(mode-line-inactive ((t (:background "Grey60" :foreground "Grey76"))))
)
;;-----------------------------------------------------------------------------
;; 勝沼かつえ拡張子の関連付け。
(add-to-list 'auto-mode-alist '("\\.katsue\\'" . katsue-mode))
(add-to-list 'auto-mode-alist '("\\.kte\\'" . katsue-mode))
(add-to-list 'auto-mode-alist '("\\.text\\'" . katsue-mode))
(add-to-list 'auto-mode-alist '("\\.txt\\'" . katsue-mode))
;; 勝沼かつえ編集モード。 勝沼かつえ関係の字句の強調表示。
(defun katsue-mode ()
"Katsue Mode"
(interactive)
(kill-all-local-variables)
(setq mode-name "Katsue")
(setq major-mode 'katsue-mode)
(run-hooks 'katsue-mode-hook))
(defcustom katsue-mode-hook nil
"Normal hook run when entering `katsue-mode'.
See `run-hooks'."
:type 'hook
:group 'katsue)
(font-lock-add-keywords 'katsue-mode
'(("KATSUE\\|Katsue\\|katsue\\|KATSUNUMA\\|Katsunuma\\|katsunuma\\|勝沼\\|かつぬま\\|カツヌマ\\|かつえ\\|カツエ" . 'katsue-face) ))
(defface katsue-face '((t :background "grey80")) "my-katsue-face")
(add-hook 'katsue-mode-hook
'(lambda ()
(font-lock-mode 1)
(make-face 'katsue-face)
(set-face-foreground 'katsue-face "darkcyan")
(font-lock-fontify-buffer) ))
(provide 'katsue-mode)
;;-----------------------------------------------------------------------------
;; katsue-gosh開発環境モード。
(fset 'katsue-gosh1
(kmacro-lambda-form
[?\C-x ?1 ?\C-c ?s escape ?i ?\C-x ?o] 0 "%d"))
(fset 'katsue-gosh2
(kmacro-lambda-form
[?\C-x ?1 ?\C-c ?s ?\C-x ?2 ?\C-x ?o ?\M-x ?e ?s ?h ?e ?l ?l return
?\C-x ?o ?\C-x ?o escape ?i ?\C-x ?o ?\C-x ?o] 0 "%d"))
;;-----------------------------------------------------------------------------
(fset 'katsue-buffer-left
(kmacro-lambda-form [?\C-x left] 0 "%d"))
(fset 'katsue-buffer-right
(kmacro-lambda-form [?\C-x right] 0 "%d"))
;;-----------------------------------------------------------------------------
;; (defun katsue-gosh-mode-hooks ()
;; "katsue-gosh-mode-hooks"
;; (when (eq major-mode 'scheme-mode)
;; (katsue-gosh)
;; (katsue-buffer-left)
;; ))
;; (add-hook 'find-file-hook 'katsue-gosh-mode-hooks)
;; (add-hook 'scheme-mode-hook 'katsue-gosh-mode-hooks)
;;-----------------------------------------------------------------------------
;; Evil
(require 'evil)
(evil-mode 1)
;; Schemeを使うには必須のEvil設定。
(setq evil-move-cursor-back nil)
(setq evil-move-beyond-eol t)
(setq evil-highlight-closing-paren-at-point-states '(not emacs insert replace normal))
;; EvilのNormalステートでeeのキーバインドでS式を評価。
(define-key evil-normal-state-map (kbd "ee") (kbd "C-x C-e"))
;; EvilのNormalステートでのファイルの入出力。
(define-key evil-normal-state-map (kbd "ff") (kbd "C-x C-f"))
(define-key evil-normal-state-map (kbd "ww") (kbd "C-x C-s"))
;; ファイル読み込み。
(define-key evil-normal-state-map (kbd ":l") (kbd "C-c C-l"))
;; 行の削除。
(define-key evil-normal-state-map (kbd ":k") (kbd "C-k")) ;; kill line
;; 行頭・行末の移動。
(define-key evil-normal-state-map (kbd ":a") 'beginning-of-line)
(define-key evil-normal-state-map (kbd ":e") 'move-end-of-line)
;; S式移動。 forward back
(define-key evil-normal-state-map (kbd ":f") (kbd "C-M-f")) ;; forward
(define-key evil-normal-state-map (kbd ":b") (kbd "C-M-b")) ;; back
;; S式移動。 head tail
(define-key evil-normal-state-map (kbd ":h") (kbd "C-M-a")) ;; head
(define-key evil-normal-state-map (kbd ":t") (kbd "C-M-e")) ;; tail
;; S式移動。 up down
(define-key evil-normal-state-map (kbd ":u") (kbd "C-M-u")) ;; up
(define-key evil-normal-state-map (kbd ":d") (kbd "C-M-d")) ;; down
;; S式のマーク。
(define-key evil-normal-state-map (kbd ": SPC") (kbd "C-M-SPC"))
;; (define-key evil-visual-state-map (kbd ": SPC") (kbd "C-M-SPC"))
;; S式のインデント揃え。
(define-key evil-normal-state-map (kbd ":\\") (kbd "C-M-\\"))
;; カット・コピー・ヤンク。
;; (define-key evil-normal-state-map (kbd ":x") (kbd "dd"))
(define-key evil-visual-state-map (kbd ":x") 'evil-delete)
(define-key evil-normal-state-map (kbd ":c") (kbd "yw"))
(define-key evil-normal-state-map (kbd ":y") (kbd "p"))
;;(define-key evil-visual-state-map (kbd ":x") (kbd "dd"))
(define-key evil-visual-state-map (kbd ":x") 'evil-delete)
(define-key evil-visual-state-map (kbd ":c") (kbd "yw"))
(define-key evil-visual-state-map (kbd ":y") (kbd "p"))
;; 選択範囲。
(define-key evil-normal-state-map (kbd ":v1") (kbd "v"))
(define-key evil-normal-state-map (kbd ":v2") (kbd "V"))
(define-key evil-normal-state-map (kbd ":v3") (kbd "C-v"))
;; 画面分割。
(define-key evil-normal-state-map (kbd ":0") (kbd "C-x 0"))
(define-key evil-normal-state-map (kbd ":1") (kbd "C-x 1"))
(define-key evil-normal-state-map (kbd ":2") (kbd "C-x 2"))
(define-key evil-normal-state-map (kbd ":3") (kbd "C-x 3"))
;; 画面の移動。
(define-key evil-normal-state-map (kbd "C-w") (kbd "C-x o"))
(define-key evil-insert-state-map (kbd "C-w") (kbd "C-x o"))
(define-key evil-visual-state-map (kbd "C-w") (kbd "C-x o"))
(define-key evil-operator-state-map (kbd "C-w") (kbd "C-x o"))
(define-key evil-replace-state-map (kbd "C-w") (kbd "C-x o"))
(define-key evil-motion-state-map (kbd "C-w") (kbd "C-x o"))
(define-key evil-emacs-state-map (kbd "C-w") (kbd "C-x o"))
;; (define-key evil-normal-state-map (kbd ":o") (kbd "C-x o"))
;; (define-key evil-insert-state-map (kbd ":o") (kbd "C-x o"))
;; (define-key evil-visual-state-map (kbd ":o") (kbd "C-x o"))
;; (define-key evil-operator-state-map (kbd ":o") (kbd "C-x o"))
;; (define-key evil-replace-state-map (kbd ":o") (kbd "C-x o"))
;; (define-key evil-motion-state-map (kbd ":o") (kbd "C-x o"))
;; (define-key evil-emacs-state-map (kbd ":o") (kbd "C-x o"))
;; 各ステートとEmacsステートの切り替え。
;; (define-key evil-normal-state-map (kbd ":z") (kbd "C-z"))
;; (define-key evil-insert-state-map (kbd ":z") (kbd "C-z"))
;; (define-key evil-visual-state-map (kbd ":z") (kbd "C-z"))
;; (define-key evil-operator-state-map (kbd ":z") (kbd "C-z"))
;; (define-key evil-replace-state-map (kbd ":z") (kbd "C-z"))
;; (define-key evil-motion-state-map (kbd ":z") (kbd "C-z"))
;; (define-key evil-emacs-state-map (kbd ":z") (kbd "C-z"))
;; goshの起動。
(define-key evil-normal-state-map (kbd ":g1") 'katsue-gosh1)
(define-key evil-normal-state-map (kbd ":g2") 'katsue-gosh2)
;; Evilのステートごとの勝沼かつえカラーテーマの背景色の色分け。
(add-hook 'evil-normal-state-entry-hook
'(lambda ()
(with-current-buffer (window-buffer)
(buffer-face-set '(:background "Grey69")))))
(add-hook 'evil-insert-state-entry-hook
'(lambda ()
(with-current-buffer (window-buffer)
(buffer-face-set '(:background "#e7e7e7")))))
(add-hook 'evil-visual-state-entry-hook
'(lambda ()
(with-current-buffer (window-buffer)
(buffer-face-set '(:background "#e7e7e7")))))
(add-hook 'evil-operator-state-entry-hook
'(lambda ()
(with-current-buffer (window-buffer)
(buffer-face-set '(:background "#e7e7e7")))))
(add-hook 'evil-replace-state-entry-hook
'(lambda ()
(with-current-buffer (window-buffer)
(buffer-face-set '(:background "#e7e7e7")))))
(add-hook 'evil-motion-state-entry-hook
'(lambda ()
(with-current-buffer (window-buffer)
(buffer-face-set '(:background "#e7e7e7")))))
(add-hook 'evil-emacs-state-entry-hook
'(lambda ()
(with-current-buffer (window-buffer)
(buffer-face-set '(:background "#e7e7e7")))))
;;-----------------------------------------------------------------------------
;; Powerline-evil
;;; powerline-evil-themes.el --- Evil themes for Powerline
;; Copyright (C) 2014 Chris Johnson
;; Author: Chris Johnson chris@christophermjohnson.net
;; Version: 1.0
;; Keywords: evil, mode-line, powerline
;; URL: http://github.com/johnson-christopher/powerline-evil/
;;; Commentary:
;;
;; Evil themes for Powerline.
;; Included themes: evil-center-color, evil-vim, and evil-vim-color.
;;
;;; Code:
;;;###autoload
(defun powerline-evil-center-color-theme ()
"Powerline's center-evil them with the evil state in color."
(interactive)
(setq-default mode-line-format
'("%e"
(:eval
(let* ((active (powerline-selected-window-active))
(mode-line (if active 'mode-line 'mode-line-inactive))
(face1 (if active 'powerline-active1 'powerline-inactive1))
(face2 (if active 'powerline-active2 'powerline-inactive2))
(separator-left (intern (format "powerline-%s-%s"
(powerline-current-separator)
(car powerline-default-separator-dir))))
(separator-right (intern (format "powerline-%s-%s"
(powerline-current-separator)
(cdr powerline-default-separator-dir))))
(lhs (list (powerline-raw "%*" nil 'l)
(powerline-buffer-size nil 'l)
(powerline-buffer-id nil 'l)
(powerline-raw " ")
(funcall separator-left mode-line face1)
(powerline-narrow face1 'l)
(powerline-vc face1)))
(rhs (list (powerline-raw global-mode-string face1 'r)
(powerline-raw "%4l" face1 'r)
(powerline-raw ":" face1)
(powerline-raw "%3c" face1 'r)
(funcall separator-right face1 mode-line)
(powerline-raw " ")
(powerline-raw "%6p" nil 'r)
(powerline-hud face2 face1)))
(center (append (list (powerline-raw " " face1)
(funcall separator-left face1 face2)
(when (boundp 'erc-modified-channels-object)
(powerline-raw erc-modified-channels-object face2 'l))
(powerline-major-mode face2 'l)
(powerline-process face2)
(powerline-raw " " face2))
(let ((evil-face (powerline-evil-face)))
(if (split-string (format-mode-line minor-mode-alist))
(append (if evil-mode
(list (funcall separator-right face2 evil-face)
(powerline-raw (powerline-evil-tag) evil-face 'l)
(powerline-raw " " evil-face)
(funcall separator-left evil-face face2)))
(list (powerline-minor-modes face2 'l)
(powerline-raw " " face2)
(funcall separator-right face2 face1)))
(list (powerline-raw (powerline-evil-tag) evil-face)
(funcall separator-right evil-face face1)))))))
(concat (powerline-render lhs)
(powerline-fill-center face1 (/ (powerline-width center) 2.0))
(powerline-render center)
(powerline-fill face1 (powerline-width rhs))
(powerline-render rhs)))))))
;;;###autoload
(defun powerline-evil-vim-theme ()
"Powerline's Vim-like mode-line with evil state at the beginning."
(interactive)
(setq-default mode-line-format
'("%e"
(:eval
(let* ((active (powerline-selected-window-active))
(mode-line (if active 'mode-line 'mode-line-inactive))
(face1 (if active 'powerline-active1 'powerline-inactive1))
(face2 (if active 'powerline-active2 'powerline-inactive2))
(separator-left (intern (format "powerline-%s-%s"
(powerline-current-separator)
(car powerline-default-separator-dir))))
(separator-right (intern (format "powerline-%s-%s"
(powerline-current-separator)
(cdr powerline-default-separator-dir))))
(lhs (list (if evil-mode
(powerline-raw (powerline-evil-tag) mode-line))
(powerline-buffer-id `(mode-line-buffer-id ,mode-line) 'l)
(powerline-raw "[" mode-line 'l)
(powerline-major-mode mode-line)
(powerline-process mode-line)
(powerline-raw "]" mode-line)
(when (buffer-modified-p)
(powerline-raw "[+]" mode-line))
(when buffer-read-only
(powerline-raw "[RO]" mode-line))
(powerline-raw "[%z]" mode-line)
;; (powerline-raw (concat "[" (mode-line-eol-desc) "]") mode-line)
(when (and (boundp 'which-func-mode) which-func-mode)
(powerline-raw which-func-format nil 'l))
(when (boundp 'erc-modified-channels-object)
(powerline-raw erc-modified-channels-object face1 'l))
(powerline-raw "[" mode-line 'l)
(powerline-minor-modes mode-line) (powerline-raw "%n" mode-line)
(powerline-raw "]" mode-line)
(when (and vc-mode buffer-file-name)
(let ((backend (vc-backend buffer-file-name)))
(when backend
(concat (powerline-raw "[" mode-line 'l)
(powerline-raw (format "%s / %s" backend (vc-working-revision buffer-file-name backend)))
(powerline-raw "]" mode-line)))))))
(rhs (list (powerline-raw '(10 "%i"))
(powerline-raw global-mode-string mode-line 'r)
(powerline-raw "%l," mode-line 'l)
(powerline-raw (format-mode-line '(10 "%c")))
(powerline-raw (replace-regexp-in-string "%" "%%" (format-mode-line '(-3 "%p"))) mode-line 'r))))
(concat (powerline-render lhs)
(powerline-fill mode-line (powerline-width rhs))
(powerline-render rhs)))))))
;;;###autoload
(defun powerline-evil-vim-color-theme ()
"Powerline's Vim-like mode-line with evil state at the beginning in color."
(interactive)
(setq-default mode-line-format
'("%e"
(:eval
(let* ((active (powerline-selected-window-active))
(mode-line (if active 'mode-line 'mode-line-inactive))
(face1 (if active 'powerline-active1 'powerline-inactive1))
(face2 (if active 'powerline-active2 'powerline-inactive2))
(separator-left (intern (format "powerline-%s-%s"
(powerline-current-separator)
(car powerline-default-separator-dir))))
(separator-right (intern (format "powerline-%s-%s"
(powerline-current-separator)
(cdr powerline-default-separator-dir))))
(lhs (list (let ((evil-face (powerline-evil-face)))
(if evil-mode
(powerline-raw (powerline-evil-tag) evil-face)))
(powerline-buffer-id `(mode-line-buffer-id ,mode-line) 'l)
(powerline-raw "[" mode-line 'l)
(powerline-major-mode mode-line)
(powerline-process mode-line)
(powerline-raw "]" mode-line)
(when (buffer-modified-p)
(powerline-raw "[+]" mode-line))
(when buffer-read-only
(powerline-raw "[RO]" mode-line))
(powerline-raw "[%z]" mode-line)
;; (powerline-raw (concat "[" (mode-line-eol-desc) "]") mode-line)
(when (and (boundp 'which-func-mode) which-func-mode)
(powerline-raw which-func-format nil 'l))
(when (boundp 'erc-modified-channels-object)
(powerline-raw erc-modified-channels-object face1 'l))
(powerline-raw "[" mode-line 'l)
(powerline-minor-modes mode-line)
(powerline-raw "%n" mode-line)
(powerline-raw "]" mode-line)
(when (and vc-mode buffer-file-name)
(let ((backend (vc-backend buffer-file-name)))
(when backend
(concat (powerline-raw "[" mode-line 'l)
(powerline-raw (format "%s / %s" backend (vc-working-revision buffer-file-name backend)))
(powerline-raw "]" mode-line)))))))
(rhs (list (powerline-raw '(10 "%i"))
(powerline-raw global-mode-string mode-line 'r)
(powerline-raw "%l," mode-line 'l)
(powerline-raw (format-mode-line '(10 "%c")))
(powerline-raw (replace-regexp-in-string "%" "%%" (format-mode-line '(-3 "%p"))) mode-line 'r))))
(concat (powerline-render lhs)
(powerline-fill mode-line (powerline-width rhs))
(powerline-render rhs)))))))
;;-----------------------------------------------------------------------------
;;;###autoload
(defun powerline-evil-center-katsue-color-theme ()
"Powerline's center-evil them with the evil state in color."
(interactive)
(setq-default mode-line-format
'("%e"
(:eval
(let* ((active (powerline-selected-window-active))
(mode-line (if active 'mode-line 'mode-line-inactive))
(face1 (if active 'powerline-active1 'powerline-inactive1))
(face2 (if active 'powerline-active2 'powerline-inactive2))
(separator-left (intern (format "powerline-%s-%s"
(powerline-current-separator)
(car powerline-default-separator-dir))))
(separator-right (intern (format "powerline-%s-%s"
(powerline-current-separator)
(cdr powerline-default-separator-dir))))
(lhs (list
(powerline-raw "%*" nil 'l)
;; (powerline-buffer-size nil 'l)
(powerline-buffer-id nil 'l)
(powerline-raw " ")
(funcall separator-left mode-line face1)
;; (powerline-narrow face2 'l)
;; (powerline-vc face2)
))
(rhs (list
;; (powerline-raw global-mode-string face2 'r)
(powerline-raw "%4l" mode-line 'r)
(powerline-raw ":" mode-line)
(powerline-raw "%3c" mode-line 'r)
;; (funcall separator-right face1 mode-line)
;; (powerline-raw " ")
;; (powerline-raw "%6p" nil 'r)
;; (powerline-hud face2 face1)
))
(center (append (list (powerline-raw " " face1)
(funcall separator-left face1 face2)
(when (boundp 'erc-modified-channels-object)
(powerline-raw erc-modified-channels-object face2 'l))
(powerline-major-mode face2 'l)
(powerline-process face2)
(powerline-raw " " face2))
(let ((evil-face (powerline-evil-face)))
(if (split-string (format-mode-line minor-mode-alist))
(append (if evil-mode
(list (funcall separator-right face2 evil-face)
(powerline-raw (powerline-evil-tag) evil-face 'l)
(powerline-raw " " evil-face)
(funcall separator-left evil-face face2)))
(list (powerline-minor-modes face2 'l)
(powerline-raw " " face2)
(funcall separator-right face2 face1)
(powerline-raw " " face1)
(funcall separator-right face1 mode-line)))
(list (powerline-raw (powerline-evil-tag) evil-face)
(funcall separator-right evil-face face1)))))))
(concat (powerline-render lhs)
;; (powerline-fill-center face1 (/ (powerline-width center) 2.0))
(powerline-render center)
;; (powerline-fill face1 (powerline-width rhs))
(powerline-render rhs)))))))
;;;###autoload
(defun powerline-evil-vim-katsue-theme ()
"Powerline's Vim-like mode-line with evil state at the beginning."
(interactive)
(setq-default mode-line-format
'("%e"
(:eval
(let* ((active (powerline-selected-window-active))
(mode-line (if active 'mode-line 'mode-line-inactive))
(face1 (if active 'powerline-active1 'powerline-inactive1))
(face2 (if active 'powerline-active2 'powerline-inactive2))
(separator-left (intern (format "powerline-%s-%s"
(powerline-current-separator)
(car powerline-default-separator-dir))))
(separator-right (intern (format "powerline-%s-%s"
(powerline-current-separator)
(cdr powerline-default-separator-dir))))
(lhs (list (if evil-mode
(powerline-raw (powerline-evil-tag) mode-line))
(powerline-buffer-id `(mode-line-buffer-id ,mode-line) 'l)
(powerline-raw "[" mode-line 'l)
(powerline-major-mode mode-line)
(powerline-process mode-line)
(powerline-raw "]" mode-line)
;; (when (buffer-modified-p)
;; (powerline-raw "[+]" mode-line))
(if (buffer-modified-p)
(powerline-raw "[+]" mode-line)
(powerline-raw "[-]" mode-line))
;; (when buffer-read-only
;; (powerline-raw "[RO]" mode-line))
(if buffer-read-only
(powerline-raw "[R]" mode-line)
(powerline-raw "[-]" mode-line))
(powerline-raw "[%z]" mode-line)
;; (powerline-raw (concat "[" (mode-line-eol-desc) "]") mode-line)
(when (and (boundp 'which-func-mode) which-func-mode)
(powerline-raw which-func-format nil 'l))
(when (boundp 'erc-modified-channels-object)
(powerline-raw erc-modified-channels-object face1 'l))
(powerline-raw "[" mode-line 'l)
(powerline-minor-modes mode-line)
(powerline-raw "%n" mode-line)
(powerline-raw "]" mode-line)
(when (and vc-mode buffer-file-name)
(let ((backend (vc-backend buffer-file-name)))
(when backend
(concat (powerline-raw "[" mode-line 'l)
(powerline-raw (format "%s / %s" backend (vc-working-revision buffer-file-name backend)))
(powerline-raw "]" mode-line)))))))
(rhs (list
;; (powerline-raw '(10 "%i"))
;; (powerline-raw global-mode-string mode-line 'r)
(powerline-raw "%l," mode-line 'l)
(powerline-raw (format-mode-line '(10 "%c")))
;; (powerline-raw (replace-regexp-in-string "%" "%%" (format-mode-line '(-3 "%p"))) mode-line 'r)
)))
(concat (powerline-render lhs)
;; (powerline-fill mode-line (powerline-width rhs))
(powerline-render rhs)
))))))
;;;###autoload
(defun powerline-evil-vim-katsue-color-theme ()
"Powerline's Vim-like mode-line with evil state at the beginning in color."
(interactive)
(setq-default mode-line-format
'("%e"
(:eval
(let* ((active (powerline-selected-window-active))
(mode-line (if active 'mode-line 'mode-line-inactive))
(face1 (if active 'powerline-active1 'powerline-inactive1))
(face2 (if active 'powerline-active2 'powerline-inactive2))
(separator-left (intern (format "powerline-%s-%s"
(powerline-current-separator)
(car powerline-default-separator-dir))))
(separator-right (intern (format "powerline-%s-%s"
(powerline-current-separator)
(cdr powerline-default-separator-dir))))
(lhs (list
(powerline-raw " " mode-line)
;; (funcall separator-right mode-line (powerline-evil-face))
;; (funcall separator-right (powerline-evil-face) mode-line)
(funcall separator-right mode-line (powerline-evil-face))
;; (funcall separator-left mode-line (powerline-evil-face))
;; (funcall separator-left (powerline-evil-face) mode-line)
;; (funcall separator-left mode-line (powerline-evil-face))
;; (powerline-raw " " (powerline-evil-face))
(let ((evil-face (powerline-evil-face)))
(if evil-mode
(powerline-raw (powerline-evil-tag) evil-face)))
;; (powerline-raw " " (powerline-evil-face))
(funcall separator-left (powerline-evil-face) mode-line)
;; (funcall separator-left mode-line (powerline-evil-face))
;; (funcall separator-left (powerline-evil-face) mode-line)
(powerline-buffer-id `(mode-line-buffer-id ,mode-line) 'l)
;; (powerline-raw " " mode-line)
;; (funcall separator-left mode-line (powerline-evil-face))
;; (powerline-raw " " (powerline-evil-face))
;; (funcall separator-left (powerline-evil-face) mode-line)
(powerline-raw "[" mode-line 'l)
(powerline-major-mode mode-line)
(powerline-process mode-line)
(powerline-raw "]" mode-line)
;; (when (buffer-modified-p)
;; (powerline-raw "[+]" mode-line))
(if (buffer-modified-p)
(powerline-raw "[+]" mode-line)
(powerline-raw "[-]" mode-line))
;; (when buffer-read-only
;; (powerline-raw "[RO]" mode-line))
(if buffer-read-only
(powerline-raw "[R]" mode-line)
(powerline-raw "[-]" mode-line))
(powerline-raw "[%z]" mode-line)
;; (powerline-raw (concat "[" (mode-line-eol-desc) "]") mode-line)
(when (and (boundp 'which-func-mode) which-func-mode)
(powerline-raw which-func-format nil 'l))
(when (boundp 'erc-modified-channels-object)
(powerline-raw erc-modified-channels-object face1 'l))
(powerline-raw "[" mode-line 'l)
(powerline-minor-modes mode-line)
(powerline-raw "%n" mode-line)
(powerline-raw "]" mode-line)
(when (and vc-mode buffer-file-name)
(let ((backend (vc-backend buffer-file-name)))
(when backend
(concat (powerline-raw "[" mode-line 'l)
(powerline-raw (format "%s / %s" backend (vc-working-revision buffer-file-name backend)))
(powerline-raw "]" mode-line)))))))
(rhs (list
;; (powerline-raw '(10 "%i"))
;; (powerline-raw global-mode-string mode-line 'r)
;; (powerline-raw " " mode-line)
;; (funcall separator-left mode-line (powerline-evil-face))
;; (powerline-raw " " (powerline-evil-face))
;; (funcall separator-left (powerline-evil-face) mode-line)
;; (powerline-raw " " mode-line 'l)
(powerline-raw "%l," mode-line 'l)
(powerline-raw (format-mode-line '(10 "%c")))
;; (powerline-raw (replace-regexp-in-string "%" "%%" (format-mode-line '(-3 "%p"))) mode-line 'r)
)))
(concat (powerline-render lhs)
;; (powerline-fill mode-line (powerline-width rhs))
(powerline-render rhs)
))))))
(provide 'powerline-evil-themes)
;;; powerline-evil-themes.el ends here
;;-----------------------------------------------------------------------------
;;; powerline-evil.el --- Utilities for better Evil support for Powerline
;; Copyright (C) 2014 Chris Johnson
;; Author: Chris Johnson chris@christophermjohnson.net
;; Version: 1.0
;; Package-Requires: ((evil "1.0.8") (powerline "2.3"))
;; Keywords: evil, mode-line, powerline
;; URL: http://github.com/johnson-christopher/powerline-evil/
;;; Commentary:
;;
;; Utilities for better Evil support for Powerline and a few extra themes.
;;
;;; Code:
;; (require 'evil)
(require 'powerline)
;; (require 'powerline-evil-themes)
(defcustom powerline-evil-tag-style 'visual-expanded
"The style to use for displaying the evil state tag.
Valid Values: standard, verbose, visual-expanded"
:group 'powerline
:type '(choice (const standard)
(const verbose)
(const visual-expanded)))
(defface powerline-evil-base-face
'((t (:foreground "white" :inherit mode-line)))
"Base face for powerline evil faces."
:group 'powerline)
(defface powerline-evil-normal-face
;; '((t (:background "green" :inherit powerline-evil-base-face)))
;; '((t (:background "darkgreen" :inherit powerline-evil-base-face)))
;; '((t (:background "#238534" :inherit powerline-evil-base-face)))
'((t (:background "#288b39" :inherit powerline-evil-base-face)))
"Powerline face for evil NORMAL state."
:group 'powerline)
(defface powerline-evil-insert-face
'((t (:background "blue" :inherit powerline-evil-base-face)))
"Powerline face for evil INSERT state."
:group 'powerline)
(defface powerline-evil-visual-face
;; '((t (:background "orange" :inherit powerline-evil-base-face)))
'((t (:background "darkcyan" :inherit powerline-evil-base-face)))
"Powerline face for evil VISUAL state."
:group 'powerline)
(defface powerline-evil-operator-face
'((t (:background "cyan" :inherit powerline-evil-operator-face)))
"Powerline face for evil OPERATOR state."
:group 'powerline)
(defface powerline-evil-replace-face
'((t (:background "red" :inherit powerline-evil-base-face)))
"Powerline face for evil REPLACE state."
:group 'powerline)
(defface powerline-evil-motion-face
'((t (:background "magenta" :inherit powerline-evil-base-face)))
"Powerline face for evil MOTION state."
:group 'powerline)
(defface powerline-evil-emacs-face
'((t (:background "violet" :inherit powerline-evil-base-face)))
"Powerline face for evil EMACS state."
:group 'powerline)
;;;###autoload
(defun powerline-evil-face ()
"Function to select appropriate face based on `evil-state'."
(let* ((face (intern (concat "powerline-evil-" (symbol-name evil-state) "-face"))))
(if (facep face) face nil)))
(defun powerline-evil-tag ()
"Get customized tag value for current evil state."
(let* ((visual-block (and (evil-visual-state-p)
(eq evil-visual-selection 'block)))
(visual-line (and (evil-visual-state-p)
(eq evil-visual-selection 'line))))
(cond ((eq powerline-evil-tag-style 'visual-expanded)
(cond (visual-block " +V+ ")
(visual-line " -V- ")
(t evil-mode-line-tag)))
((eq powerline-evil-tag-style 'verbose)
(upcase (concat (symbol-name evil-state)
(cond (visual-block " BLOCK")
(visual-line " LINE")))))
(t evil-mode-line-tag))))
(provide 'powerline-evil)
;;; powerline-evil.el ends here
;;-----------------------------------------------------------------------------
(require 'powerline-evil)
;; (powerline-evil-center-color-theme)
;; (powerline-evil-vim-theme)
;; (powerline-evil-vim-color-theme)
;; (powerline-evil-center-katsue-color-theme)
;; (powerline-evil-vim-katsue-theme)
(powerline-evil-vim-katsue-color-theme)
;;-----------------------------------------------------------------------------