Files
creature/lisp/init-theme.el
T

100 lines
2.8 KiB
EmacsLisp

;; -*- coding: utf-8; lexical-binding: t; -*-
;; Pulse
(defvar creature/pulse-enable t
"Whether enable pulse for scroll and switch window.")
(defun creature/pulse-line (&rest _)
"Pulse the current line."
(when (and creature/pulse-enable (display-graphic-p))
(pulse-momentary-highlight-one-line (point))))
;; pulse setup, like beacon
(with-eval-after-load 'pulse
(setq pulse-delay 0.04))
(dolist (command '(scroll-up
scroll-down
recenter))
(advice-add command :after #'creature/pulse-line))
(add-to-list 'window-selection-change-functions #'creature/pulse-line)
;; address style
(add-hook 'erc-mode-hook #'goto-address-mode)
(add-hook 'text-mode-hook #'goto-address-mode)
(add-hook 'prog-mode-hook #'goto-address-prog-mode)
(autoload 'rainbow-delimiters-mode "rainbow-delimiters")
(autoload 'rainbow-identifiers-mode "rainbow-identifiers")
(dolist (mode '(rainbow-delimiters-mode rainbow-identifiers-mode))
(add-hook 'prog-mode-hook mode))
(global-whitespace-mode 1)
(setq whitespace-style
'(tabs
trailing
lines
space-before-tab
newline
indentation
empty
space-after-tab
tab-mark
missing-newline-at-eof))
(defun creature/show-trailing-whitespace ()
(when (buffer-file-name)
(setq show-trailing-whitespace t)))
(add-hook 'find-file-hook #'creature/show-trailing-whitespace)
(blink-cursor-mode -1)
(defconst creature/font-config
;; '(("Operator Mono Book" . 16))
(if (eq system-type 'windows-nt)
(if (> (frame-pixel-width) 2560)
'(("等距更纱黑体 SC" . 24))
'(("等距更纱黑体 SC" . 16)))
'(("Sarasa Mono SC" . 16)))
;; '(("Source Code Pro" . 16))
"Font config.
It's a list of single-byte and multi-byte font.
Each font conf looks like (FAMILY . SIZE).")
(defun creature/fontset (&optional frame)
"Config fonts for FRAME.
if FRAME is nil, setup for current frame."
;; single-byte code
(setq inhibit-compacting-font-caches
(if (eq system-type 'window-nt) t nil))
(let ((single (car creature/font-config))
(multi (cdr creature/font-config)))
(let ((family (car single))
(size (cdr single)))
(when (or family size)
(condition-case nil
(set-face-attribute
'default frame
:font (font-spec :family family :size size))
(error nil))))
(let ((family (car multi))
(size (cdr multi)))
(when (member family (font-family-list))
(dolist (charset '(kana han cjk-misc bopomofo))
(condition-case nil
(set-fontset-font
t charset
(font-spec :family family :size size) frame)
(error nil)))))))
(add-hook 'emacs-startup-hook #'creature/fontset)
(add-hook 'server-after-make-frame-hook #'creature/fontset)
(provide 'init-theme)