scripts/emacs/init.el

320 lines
8.3 KiB
EmacsLisp
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

;; startup
(setq auto-save-default nil
backup-directory-alist '((".*" . "~/.emacs.d/backup"))
create-lockfiles nil
custom-file "~/.emacs.d/custom.el"
gc-cons-threshold 64000000
global-mark-ring-max 1024
inhibit-compacting-font-caches t
inhibit-startup-screen t
initial-buffer-choice "~/org/init.org"
initial-scratch-message nil
mark-ring-max 1024)
(load custom-file)
;; encoding
(setq current-language-environment "UTF-8"
keyboard-coding-system 'utf-8-unix)
;; visuals
(add-to-list 'default-frame-alist '(width . 80))
(add-to-list 'default-frame-alist '(height . 30))
(add-to-list 'initial-frame-alist '(width . 80))
(add-to-list 'initial-frame-alist '(height . 30))
(setq fill-column 80)
(transient-mark-mode t)
(tool-bar-mode 0)
(menu-bar-mode 0)
(set-face-attribute 'variable-pitch nil :height 120 :family "Noto Sans")
;; ergonomics
(defalias #'yes-or-no-p #'y-or-n-p)
(setq line-move-ignore-invisible nil
mouse-wheel-progressive-speed nil
repeat-too-dangerous nil
require-final-newline t
sentence-end-double-space nil
vc-follow-symlinks t)
;; parentheses
(setq show-paren-delay 0.0
show-paren-style 'parenthesis)
(show-paren-mode t)
;; scrolling
(setq scroll-conservatively 101
scroll-step 1
hscroll-step 1)
(set-scroll-bar-mode nil)
;; tabulation
(setq tab-always-indent nil
tab-width 3
standard-indent 3
indent-tabs-mode t)
(defvaralias 'c-basic-offset 'tab-width)
(defvaralias 'ruby-indent-level 'tab-width)
(defvaralias 'rust-indent-offset 'tab-width)
(load "~/.emacs.d/data.el")
;; spelling
(add-hook 'prog-mode-hook #'flyspell-prog-mode)
;; prettify symbols
(add-hook 'prog-mode-hook #'prettify-symbols-mode)
;; subword mode
(add-hook 'prog-mode-hook #'subword-mode)
;; pkgdb
(setq package-enable-at-startup nil
package-archives '(("melpa" . "https://melpa.org/packages/")
("gnu" . "https://elpa.gnu.org/packages/")))
(require 'package)
(package-initialize)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
;; macros
(add-hook 'emacs-lisp-mode-hook #'agw-fp-mode)
(add-hook 'lisp-mode-hook #'agw-fp-mode)
(add-hook 'reb-lisp-mode-hook #'agw-fp-mode)
(add-hook 'scheme-mode-hook #'agw-fp-mode)
(add-hook 'before-save-hook #'copyright-update)
(add-hook 'before-save-hook #'delete-trailing-whitespace)
(agw-set-key "b d" #'kill-this-buffer)
(agw-set-key "b e" #'ibuffer)
(agw-set-key "h" #'windmove-left)
(agw-set-key "j" #'windmove-down)
(agw-set-key "k" #'windmove-up)
(agw-set-key "l" #'windmove-right)
(agw-key-map)
(global-set-key (kbd "C-x C-<tab>") #'agw-key-map)
;; theme
(use-package base16-theme
:ensure t)
(use-package rand-theme
:ensure t
:after base16-theme
:config
(setq rand-theme-wanted '(base16-atelier-cave
base16-atelier-forest
base16-atelier-heath))
(rand-theme))
(use-package doom-modeline
:ensure t
:after evil
:hook (after-init . doom-modeline-mode)
:init
(setq doom-modeline-bar-width 3
doom-modeline-buffer-encoding nil
doom-modeline-buffer-file-name-style 'truncate-with-project
doom-modeline-major-mode-icon nil
doom-modeline-minor-modes t
doom-modeline-project-detection 'project
doom-modeline-vcs-max-length 8)
(set-face-attribute 'mode-line nil :background "black"))
;; major modes
(use-package fish-mode
:ensure t
:init
(setq fish-indent-offset 3))
(use-package glsl-mode
:ensure t)
(use-package haskell-mode
:ensure t
:hook (haskell-mode . agw-fp-mode))
(use-package markdown-mode
:ensure t)
(use-package ruby-mode
:ensure t
:init
(setq ruby-insert-encoding-magic-comment nil))
(use-package rust-mode
:ensure t)
;; org-mode
(use-package org
:ensure t
:hook ((org-mode . variable-pitch-mode)
(org-mode . flyspell-mode)
(org-mode . agw-org-mode))
:init
(setq org-fontify-whole-heading-line t
org-hide-emphasis-markers t
org-hide-leading-stars t
org-hide-macro-markers t
org-indent-indentation-per-level 2
org-list-indent-offset 2
org-log-done '(note)
org-pretty-entities t
org-return-follows-link t
org-startup-folded nil
org-link-frame-setup '((vm . vm-visit-folder)
(vm-imap . vm-visit-imap-folder)
(gnus . gnus)
(file . find-file)
(wl . wl)))
:config
(dolist (face '(org-block
org-block-begin-line
org-block-end-line
org-checkbox
org-code
org-date
org-document-info-keyword
org-verbatim))
(set-face-attribute face nil :inherit 'fixed-pitch))
(set-face-attribute
'org-document-title nil
:foreground "#aa573c"
:weight 'bold
:height 1.6)
(dolist (face '((org-level-1 outline-1 . 1.35)
(org-level-2 outline-2 . 1.30)
(org-level-3 outline-3 . 1.25)
(org-level-4 outline-4 . 1.20)
(org-level-5 outline-5 . 1.15)
(org-level-6 outline-6 . 1.10)
(org-level-7 outline-7 . 1.05)))
(set-face-attribute
(car face) nil
:inherit (car (cdr face))
:height (cdr (cdr face))))
(set-face-attribute 'org-level-4 nil :foreground "dark slate blue"))
(use-package org-bullets
:ensure t
:after org
:hook (org-mode . org-bullets-mode)
:init
(setq org-bullets-bullet-list '("" "" "" "" "")))
;; adjustments
(use-package smart-tabs-mode
:ensure t
:after (fish-mode glsl-mode rust-mode)
:config
(smart-tabs-add-language-support rust rust-mode-hook
((rust-mode-indent-line . rust-indent-offset)))
(smart-tabs-add-language-support fish fish-mode-hook
((fish-indent-line . fish-indent-offset)))
(smart-tabs-add-language-support glsl glsl-mode-hook
((c-indent-line . c-basic-offset)
(c-indent-region . c-basic-offset)))
(smart-tabs-insinuate
'c
'fish
'javascript
'rust
'glsl))
(use-package ialign
:ensure t
:init
(setq ialign-initial-repeat t))
(use-package rainbow-delimiters
:ensure t
:hook (prog-mode . rainbow-delimiters-mode)
:init
(setq rainbow-delimiters-max-face-count 8)
:config
(dolist (face '((rainbow-delimiters-depth-1-face . "#e88385")
(rainbow-delimiters-depth-2-face . "#ec79c0")
(rainbow-delimiters-depth-3-face . "#cb88e8")
(rainbow-delimiters-depth-4-face . "#9181e8")
(rainbow-delimiters-depth-5-face . "#8dc8e8")
(rainbow-delimiters-depth-6-face . "#9fe8b6")
(rainbow-delimiters-depth-7-face . "#e2e8ab")
(rainbow-delimiters-depth-8-face . "#e8c498")))
(set-face-attribute (car face) nil :foreground (cdr face))))
(use-package undo-tree
:ensure t)
(use-package whitespace
:ensure t
:hook (prog-mode . whitespace-mode)
:init
(setq whitespace-style '(face
space-before-tab
space-mark
spaces
tab-mark
tabs
trailing))
:config
(dolist (face '(whitespace-space whitespace-tab))
(set-face-attribute face nil :background nil :foreground "#7e4594")))
;; file management
(use-package dired
:hook (dired-mode . agw-dired-mode)
:config
(setq dired-listing-switches "-alhp --si")
(agw-set-key "f" #'dired-jump))
(use-package ranger
:ensure t
:after dired
:hook (dired-mode . ranger-override-dired-fn)
:config
(setq ranger-override-dired 'ranger))
(use-package deadgrep
:ensure t)
;; input
(use-package mozc
:config
(setq default-input-method "japanese-mozc"))
(use-package evil
:ensure t
:init
(setq evil-cjk-emacs-word-boundary t
evil-cross-lines t
evil-shift-width 3
evil-vsplit-window-right t
evil-want-keybinding nil)
:config
(evil-mode t)
(evil-global-set-key 'normal (kbd "K w") #'deadgrep)
(evil-global-set-key 'visual (kbd "g s") #'sort-lines)
(evil-global-set-key 'visual (kbd "g a") #'ialign))
(use-package evil-collection
:ensure t
:after evil
:config
(evil-collection-init))
;; EOF