scripts/emacs/init.el

340 lines
8.6 KiB
EmacsLisp
Raw Normal View History

;; 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)
2020-02-01 23:08:21 -08:00
(load "~/.emacs.d/data.el")
(defalias #'yes-or-no-p #'y-or-n-p)
(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
sentence-end-double-space nil)
(set-face-attribute 'variable-pitch nil :height 120 :family "Noto Sans")
;; scrolling
(setq scroll-conservatively 101
scroll-step 1
hscroll-step 1)
(set-scroll-bar-mode nil)
2020-02-01 23:08:21 -08:00
;; `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)
2020-02-01 23:08:21 -08:00
(add-hook 'prog-mode-hook #'agw-prog-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 cc-mode
:init
(defvaralias 'c-basic-offset 'tab-width))
(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
2020-02-01 23:08:21 -08:00
(defvaralias 'ruby-indent-level 'tab-width)
(setq ruby-insert-encoding-magic-comment nil))
(use-package rust-mode
2020-02-01 23:08:21 -08:00
:ensure t
:init
(defvaralias 'rust-indent-offset 'tab-width))
;; 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
2020-02-05 18:26:56 -08:00
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
2020-02-05 18:26:56 -08:00
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)
(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")))
(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))
;; 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 mule
:init
(setq current-language-environment "UTF-8"
keyboard-coding-system 'utf-8-unix))
(use-package mozc
: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-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))
2020-01-16 01:34:14 -08:00
;; 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))
2020-01-16 01:34:14 -08:00
;; EOF