.emacs.d/init.d/basics/appearance.el

107 lines
4.4 KiB
EmacsLisp
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; appearance.el --- Configure appearance. -*- lexical-binding: t; -*-
;; Time-stamp: <2020-05-24T22:30:48+0200>
;;; Commentary:
;; * Helpful visualizations.
;; * Colors and theme.
;; * Icon font.
;; * Modeline stuff.
;;; Code:
(require 'basics/package-management)
(require 'basics/global-variables)
(use-package emacs
:demand t
;; If 2 files have the same name, append directory name after the filename.
:custom ((uniquify-after-kill-buffer-p t)
(uniquify-buffer-name-style 'post-forward)
(uniquify-strip-common-suffix t))
:config (progn
(defun my/set-default-fonts ()
"Set the default font and the emoji font."
(when (member "Source Code Pro" (font-family-list)) ; Default.
(set-frame-font "Source Code Pro-10" t t))
(when (member "Noto Color Emoji" (font-family-list)) ; Emojis.
(set-fontset-font t 'unicode "Noto Color Emoji" nil 'prepend)))
(tool-bar-mode -1) ; Hide toolbar.
(menu-bar-mode -1) ; Hide menu bar.
(when (fboundp #'set-scroll-bar-mode)
(set-scroll-bar-mode 'right))
(add-to-list 'default-frame-alist '(scroll-bar-width . 8))
(my/set-default-fonts)
(global-hl-line-mode t) ; Highlight current line.
(show-paren-mode t) ; Visualize matching parens.
(setq frame-title-format ; Show filename in frame title.
'(multiple-frames
"%b" ("" invocation-name "@" system-name
" " buffer-file-truename)))))
;; Icon font (required by doom and others).
(use-package all-the-icons
:demand t
:init (defun my/font-installed-p (font-name)
"Check if font with FONT-NAME is available."
(if (find-font (font-spec :name font-name))
t
nil))
;; Install fonts if we have a GUI and the font is not already installed.
;; See <https://github.com/domtronn/all-the-icons.el/issues/58>.
:config (when (and (window-system)
(not (my/font-installed-p "all-the-icons")))
(all-the-icons-install-fonts t)))
(unless slow-computer
(use-package doom-themes
:demand t
:after (all-the-icons)
:custom ((doom-themes-treemacs-theme "doom-colors")
(doom-themes-treemacs-enable-variable-pitch nil))
:config (progn
(load-theme 'doom-outrun-electric t)
(doom-themes-visual-bell-config) ; Flash modeline on error.
(doom-themes-treemacs-config)
(set-face-background 'scroll-bar (face-background 'default))
(set-face-foreground 'scroll-bar (face-foreground 'shadow)))
;; Write a minimal theme to file, to load it in early-init.el.
(unless (string= (face-background 'default) "unspecified-bg")
(let ((minimal-theme))
(setq minimal-theme (concat "(set-face-background 'default \""
(face-background 'default) "\")\n"
"(set-face-foreground 'default \""
(face-foreground 'default) "\")\n"
"(menu-bar-mode -1)\n"
"(when (display-graphic-p)\n"
" (tool-bar-mode -1))\n"))
(with-temp-file (expand-file-name "early-theme.el"
user-emacs-directory)
(insert minimal-theme)))))
) ; unless slow-computer.
;; Neat modeline.
(use-package doom-modeline
:after (all-the-icons)
:init (column-number-mode t) ; Show column number.
:custom ((doom-modeline-minor-modes t) ; Show minor modes.
(doom-modeline-buffer-file-name-style 'truncate-except-project)
(mode-line-percent-position nil) ; Don't display percentage.
(doom-modeline-buffer-state-icon nil)) ; Don't display save icon.
:hook (after-init . doom-modeline-mode))
;; Show line numbers on the left side of the buffer.
(use-package display-line-numbers
:demand t
:if (>= emacs-major-version 26)
:config (progn (defun my/disable-line-numbers ()
(display-line-numbers-mode -1))
(global-display-line-numbers-mode)))
(provide 'basics/appearance)
;;; appearance.el ends here