scripts/emacs/init.el

452 satır
12 KiB
EmacsLisp
Ham Suçlama Geçmiş

Bu dosya muğlak Evrensel Kodlu karakter içeriyor!

Bu dosya, aşağıda görünenden farklı bir şekilde işlenebilecek muğlak Evrensel Kodlu karakter içeriyor. Eğer bunu kasıtlı ve meşru olarak yaptıysanız bu uyarıyı yok sayabilirsiniz. Bu karakterleri göstermek için Kaçış düğmesine tıklayın.

;; 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 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 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))
: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))
;; 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
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"))))
;; end of init
(setq gc-cons-threshold (* 1 1000 1000))
;; EOF