You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
476 lines
12 KiB
476 lines
12 KiB
;; startup |
|
(let ((usr-data (locate-user-emacs-file "data.el"))) |
|
(load custom-file) |
|
(load usr-data)) |
|
|
|
;; mode line |
|
(setq-default mode-line-format |
|
'("%+" |
|
mode-line-buffer-identification |
|
mode-line-modes |
|
"%5l↑%3c→%6i⇆" |
|
(:eval |
|
(number-to-string (count-lines (point-min) (point-max)))) |
|
"↓" |
|
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 #'agw-flyspell-prog-mode) |
|
(add-hook 'prog-mode-hook #'prettify-symbols-mode) |
|
(add-hook 'prog-mode-hook #'subword-mode) |
|
|
|
;; `text-mode' |
|
(add-hook 'text-mode-hook #'agw-flyspell-prog-mode) |
|
(add-hook 'text-mode-hook #'subword-mode) |
|
|
|
;; `hack-local-variables' |
|
(add-hook 'hack-local-variables-hook #'agw-after-local-vars) |
|
|
|
;; macros |
|
(setq initial-buffer-choice |
|
(lambda () |
|
(if (buffer-file-name) |
|
(current-buffer) |
|
(find-file "~/org/init.org")))) |
|
|
|
(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 #'agw-before-save) |
|
|
|
(agw-set-key "b d" #'kill-this-buffer) |
|
(agw-set-key "b e" #'ibuffer) |
|
|
|
(agw-set-key "m j" #'agw-create-back-link) |
|
(agw-set-key "m k" #'agw-create-memb-link) |
|
(agw-set-key "m l" #'agw-create-mthd-link) |
|
|
|
(agw-set-key "a" #'org-archive-to-archive-sibling) |
|
(agw-set-key "A" #'org-force-cycle-archived) |
|
|
|
(agw-set-key "k" #'deadgrep) |
|
|
|
(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 |
|
(defvar agw-base16-fira-colors |
|
'(:base00 "#0f0c11" ; default bg |
|
:base01 "#1b161f" ; lighter bg |
|
:base02 "#382c3f" ; selection bg |
|
:base03 "#505170" ; comments |
|
:base04 "#8d6f9f" ; dark fg |
|
:base05 "#ffffff" ; default fg, caret, delims, ops |
|
:base06 "#c59cdf" ; light fg |
|
:base07 "#e1b2ff" ; light bg |
|
:base08 "#e873af" ; vars, tags, lists, deletion |
|
:base09 "#f367f8" ; ints, bools, constants, attribs |
|
:base0A "#53bdb1" ; classes, bold, search bg |
|
:base0B "#5dffae" ; strings, inherited, code, insertion |
|
:base0C "#ff344f" ; support, regexps, escapes, quotes |
|
:base0D "#ba8cc6" ; funcs, methods, attrib ids, headings |
|
:base0E "#e8a8c9" ; keywords, storage, change |
|
:base0F "#b03060")) ; deprecated, open/close tags |
|
(deftheme agw-base16-fira) |
|
(base16-theme-define 'agw-base16-fira agw-base16-fira-colors) |
|
(provide-theme 'agw-base16-fira) |
|
(provide 'agw-base16-fira-theme) |
|
(enable-theme 'agw-base16-fira)) |
|
|
|
(use-package inkpot-theme |
|
:after base16-theme |
|
:ensure t |
|
:config |
|
(unless (display-graphic-p) |
|
(load-theme 'inkpot t nil)) |
|
(set-face-attribute 'mode-line nil |
|
:background "#0a0a0a" |
|
:foreground "#92ebf0")) |
|
|
|
;; major modes |
|
(use-package elisp-mode) |
|
(use-package eldoc) |
|
|
|
(use-package yaml-mode |
|
:ensure t) |
|
|
|
(use-package cmake-mode |
|
:ensure t |
|
:init |
|
(defvaralias 'cmake-tab-width 'tab-width)) |
|
|
|
(use-package powershell |
|
:ensure t |
|
:init |
|
(defvaralias 'powershell-indent 'tab-width)) |
|
|
|
(use-package js |
|
:init |
|
(defvaralias 'js-indent-level 'tab-width)) |
|
|
|
(use-package css-mode |
|
:init |
|
(defvaralias 'css-indent-offset 'tab-width)) |
|
|
|
(use-package lua-mode |
|
:ensure t |
|
:init |
|
(setq lua-indent-nested-block-content-align nil)) |
|
|
|
(use-package json-mode |
|
:ensure t |
|
:after js |
|
:init |
|
(defvaralias 'json-reformat:indent-width 'tab-width)) |
|
|
|
(use-package nim-mode |
|
:ensure t |
|
:init |
|
(defvaralias 'nim-indent-offset 'tab-width)) |
|
|
|
(use-package mmm-mode |
|
:ensure t) |
|
|
|
(use-package mmm-auto |
|
:init |
|
(setq mmm-submode-decoration-level 0) |
|
:config |
|
(mmm-add-mode-ext-class 'ruby-mode nil 'here-doc)) |
|
|
|
(use-package python |
|
:init |
|
(defvaralias 'python-indent-offset 'tab-width)) |
|
|
|
(use-package cc-mode |
|
:hook (( c-mode . agw-cc-mode) |
|
(c++-mode . agw-cc-mode)) |
|
:mode (("\\.zsc\\'" . c-mode) |
|
("\\.zc\\'" . c-mode) |
|
("\\.build\\'" . c++-mode)) |
|
:init |
|
(setq c-auto-align-backslashes nil |
|
c-basic-offset tab-width |
|
c-default-style "linux") |
|
(defvaralias 'c-basic-offset 'tab-width)) |
|
|
|
(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 . agw-flyspell-mode)) |
|
:mode (("\\.mdwn\\'" . markdown-mode))) |
|
|
|
(use-package ninja-mode |
|
:ensure t) |
|
|
|
(use-package ruby-mode |
|
:hook ((ruby-mode . mmm-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)) |
|
|
|
(use-package sgml-mode |
|
:hook (html-mode . agw-fp-mode)) |
|
|
|
;; org-mode |
|
(use-package org |
|
:hook ((org-mode . agw-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 |
|
(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 lua-mode) |
|
:config |
|
(smart-tabs-add-language-support powershell powershell-mode-hook |
|
((powershell-indent-line . powershell-indent))) |
|
(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-add-language-support lua lua-mode-hook |
|
((lua-indent-line . lua-indent-level))) |
|
(smart-tabs-insinuate |
|
'c |
|
'fish |
|
'glsl |
|
'javascript |
|
'lua |
|
'rust)) |
|
|
|
(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 hl-line |
|
:hook (prog-mode . hl-line-mode)) |
|
|
|
(use-package image-file |
|
:config |
|
(auto-image-file-mode)) |
|
|
|
(use-package editorconfig |
|
:ensure t |
|
:config |
|
(editorconfig-mode 1)) |
|
|
|
;; 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 |
|
(unless (eq system-type 'windows-nt) |
|
(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 |
|
evil-indent-convert-tabs 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 '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)) |
|
|
|
(use-package subword) |
|
|
|
(use-package dim |
|
:ensure t |
|
:after (editorconfig |
|
eldoc |
|
rainbow-mode |
|
simple |
|
subword |
|
undo-tree |
|
whitespace) |
|
:config |
|
(dim-minor-names |
|
'((abbrev-mode "Ab") |
|
(editorconfig-mode "Ec") |
|
(eldoc-mode "El") |
|
(isearch-mode "Is") |
|
(subword-mode "Sw") |
|
(undo-tree-mode "Ut") |
|
(whitespace-mode "Ws") |
|
(flyspell-mode "Fs") |
|
(rainbow-mode "Rb")))) |
|
|
|
(use-package rainbow-mode |
|
:ensure t |
|
:hook ((prog-mode . rainbow-mode) |
|
(text-mode . rainbow-mode))) |
|
|
|
;; end of init |
|
(setq gc-cons-threshold (* 1 1000 1000)) |
|
|
|
;; EOF
|
|
|