367 lines
9.8 KiB
EmacsLisp
367 lines
9.8 KiB
EmacsLisp
;; startup
|
||
(let ((usr-backup (locate-user-emacs-file "backup"))
|
||
(usr-custom (locate-user-emacs-file "custom.el"))
|
||
(usr-data (locate-user-emacs-file "data.el")))
|
||
(setq auto-save-default nil
|
||
backup-directory-alist `((".*" . ,usr-backup))
|
||
create-lockfiles nil
|
||
custom-file usr-custom
|
||
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)
|
||
(load usr-data))
|
||
|
||
(defalias #'yes-or-no-p #'y-or-n-p)
|
||
|
||
(setq fill-column 80
|
||
sentence-end-double-space nil)
|
||
|
||
(set-face-attribute 'variable-pitch nil :height 140 :family "Source Sans Pro")
|
||
(set-face-attribute 'fixed-pitch nil :height 140 :family "Source Code Pro")
|
||
|
||
(dolist (range '((#x2310 . #x26bf)
|
||
(#x26c0 . #x329f)
|
||
(#x1f000 . #x1fa9f)))
|
||
(set-fontset-font t range "Noto Color Emoji"))
|
||
|
||
(set-fontset-font t '(#x2e80 . #x9fff) "Noto Sans CJK JP")
|
||
|
||
;; mode line
|
||
(setq-default mode-line-format
|
||
'("%+"
|
||
mode-line-buffer-identification
|
||
mode-line-modes
|
||
"%5l↑ %5c→ %5i= "
|
||
mode-line-percent-position))
|
||
|
||
;; scrolling
|
||
(setq scroll-conservatively 101
|
||
scroll-step 1
|
||
hscroll-step 1)
|
||
(set-scroll-bar-mode nil)
|
||
|
||
;; `prog-mode'
|
||
(add-hook 'prog-mode-hook #'flyspell-prog-mode)
|
||
(add-hook 'prog-mode-hook #'prettify-symbols-mode)
|
||
(add-hook 'prog-mode-hook #'subword-mode)
|
||
(add-hook 'prog-mode-hook #'agw-prog-mode)
|
||
|
||
;; `hack-local-variables'
|
||
(add-hook 'hack-local-variables-hook #'agw-after-local-vars)
|
||
|
||
;; 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-mode)
|
||
|
||
(global-set-key (kbd "C-x C-<tab>") #'agw-key-map-mode)
|
||
|
||
;; packages
|
||
(require 'package)
|
||
(unless (package-installed-p 'use-package)
|
||
(package-refresh-contents)
|
||
(package-install 'use-package))
|
||
|
||
;; theme
|
||
(use-package base16-theme
|
||
:ensure t
|
||
:config
|
||
(load-theme 'base16-atelier-cave t)
|
||
(set-face-attribute 'mode-line nil
|
||
:background "#0a0a0a"
|
||
:foreground "#92ebf0"))
|
||
|
||
;; major modes
|
||
(use-package cc-mode
|
||
:init
|
||
(setq c-auto-align-backslashes nil)
|
||
(defvaralias 'c-basic-offset 'tab-width)
|
||
(add-to-list 'auto-mode-alist '("\\.zsc\\'" . c-mode)))
|
||
|
||
(use-package fish-mode
|
||
:ensure t
|
||
:init
|
||
(defvaralias 'fish-indent-offset 'tab-width))
|
||
|
||
(use-package glsl-mode
|
||
:ensure t)
|
||
|
||
(use-package haskell-mode
|
||
:ensure t
|
||
:hook (haskell-mode . agw-fp-mode))
|
||
|
||
(use-package markdown-mode
|
||
:ensure t
|
||
:hook ((markdown-mode . variable-pitch-mode)
|
||
(markdown-mode . flyspell-mode))
|
||
:config
|
||
(dolist (face '(markdown-inline-code markdown-code))
|
||
(set-face-attribute face nil :inherit 'fixed-pitch)))
|
||
|
||
(use-package ruby-mode
|
||
:init
|
||
(defvaralias 'ruby-indent-level 'tab-width)
|
||
(setq ruby-insert-encoding-magic-comment nil))
|
||
|
||
(use-package rust-mode
|
||
:ensure t
|
||
:init
|
||
(defvaralias 'rust-indent-offset 'tab-width))
|
||
|
||
;; org-mode
|
||
(use-package org
|
||
: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-image-actual-width nil
|
||
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-startup-with-inline-images t
|
||
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-table
|
||
org-verbatim))
|
||
(set-face-attribute face nil :inherit 'fixed-pitch))
|
||
(set-face-attribute
|
||
'org-document-title nil
|
||
:foreground "#aa573c"
|
||
:weight 'bold
|
||
:height 1.6)
|
||
(font-lock-add-keywords 'org-mode
|
||
'(("^ +\\([-*+]\\) "
|
||
(0 (prog1 ()
|
||
(compose-region (match-beginning 1)
|
||
(match-end 1)
|
||
"•"))))))
|
||
(dolist (face '((org-level-1 outline-1 1.35 "#ff6161")
|
||
(org-level-2 outline-2 1.30 "#ff9b61")
|
||
(org-level-3 outline-3 1.25 "#fff861")
|
||
(org-level-4 outline-4 1.20 "#81ff61")
|
||
(org-level-5 outline-5 1.15 "#61ffb5")
|
||
(org-level-6 outline-6 1.10 "#61c8ff")
|
||
(org-level-7 outline-7 1.05 "#8161ff")
|
||
(org-level-8 outline-8 1.00 "#ff61e2")))
|
||
(set-face-attribute
|
||
(nth 0 face) nil
|
||
:inherit (nth 1 face)
|
||
:height (nth 2 face))
|
||
(set-face-attribute
|
||
(nth 1 face) nil
|
||
:foreground (nth 3 face))))
|
||
|
||
(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
|
||
: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")))
|
||
|
||
(use-package image-file
|
||
:config
|
||
(auto-image-file-mode))
|
||
|
||
;; ergonomics
|
||
(use-package mwheel
|
||
:init
|
||
(setq mouse-wheel-progressive-speed nil))
|
||
|
||
(use-package vc
|
||
:init
|
||
(setq vc-follow-symlinks t))
|
||
|
||
(use-package files
|
||
:init
|
||
(setq require-final-newline t))
|
||
|
||
(use-package iedit
|
||
:ensure t
|
||
:init
|
||
(setq iedit-toggle-key-default nil)
|
||
:config
|
||
(agw-set-key "s" #'iedit-mode))
|
||
|
||
;; file management
|
||
(use-package dired
|
||
:config
|
||
(setq dired-listing-switches "-alhp --si")
|
||
(agw-set-key "f" #'dired-jump)
|
||
(agw-set-key "t" #'dired-create-empty-file))
|
||
|
||
(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 mule
|
||
:init
|
||
(setq current-language-environment "UTF-8"
|
||
keyboard-coding-system 'utf-8-unix))
|
||
|
||
(use-package mozc
|
||
:ensure t
|
||
:after mule
|
||
: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-mode-line-format 'after
|
||
evil-shift-width 3
|
||
evil-vsplit-window-right t
|
||
evil-want-keybinding nil)
|
||
;; tags
|
||
(setq evil-normal-state-tag "~"
|
||
evil-insert-state-tag "i"
|
||
evil-operator-state-tag "o"
|
||
evil-replace-state-tag "r"
|
||
evil-visual-state-tag 'agw-evil-visual-state-tag
|
||
evil-motion-state-tag "m"
|
||
evil-emacs-state-tag "x")
|
||
: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))
|
||
|
||
;; visuals
|
||
(use-package simple
|
||
:init
|
||
(setq line-move-ignore-invisible nil)
|
||
:config
|
||
(transient-mark-mode t))
|
||
|
||
(use-package tool-bar
|
||
:config
|
||
(tool-bar-mode 0))
|
||
|
||
(use-package menu-bar
|
||
:config
|
||
(menu-bar-mode 0))
|
||
|
||
(use-package paren
|
||
:init
|
||
(setq show-paren-delay 0.0
|
||
show-paren-style 'parenthesis)
|
||
:config
|
||
(show-paren-mode t))
|
||
|
||
(use-package fringe
|
||
:config
|
||
(fringe-mode 0))
|
||
|
||
;; EOF
|