;;; -*- lexical-binding: t -*- (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(comment-style 'extra-line) '(connection-local-criteria-alist '(((:application tramp :protocol "kubernetes") tramp-kubernetes-connection-local-default-profile) ((:application tramp :protocol "flatpak") tramp-container-connection-local-default-flatpak-profile tramp-flatpak-connection-local-default-profile) ((:application tramp) tramp-connection-local-default-system-profile tramp-connection-local-default-shell-profile) ((:application eshell) eshell-connection-default-profile))) '(connection-local-profile-alist '((tramp-flatpak-connection-local-default-profile (tramp-remote-path "/app/bin" tramp-default-remote-path "/bin" "/usr/bin" "/sbin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/freeware/bin" "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin" "/opt/bin" "/opt/sbin" "/opt/local/bin")) (tramp-kubernetes-connection-local-default-profile (tramp-config-check . tramp-kubernetes--current-context-data) (tramp-extra-expand-args 97 (tramp-kubernetes--container (car tramp-current-connection)) 104 (tramp-kubernetes--pod (car tramp-current-connection)) 120 (tramp-kubernetes--context-namespace (car tramp-current-connection)))) (tramp-container-connection-local-default-flatpak-profile (tramp-remote-path "/app/bin" tramp-default-remote-path "/bin" "/usr/bin" "/sbin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/freeware/bin" "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin" "/opt/bin" "/opt/sbin" "/opt/local/bin")) (tramp-connection-local-darwin-ps-profile (tramp-process-attributes-ps-args "-acxww" "-o" "pid,uid,user,gid,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "state=abcde" "-o" "ppid,pgid,sess,tty,tpgid,minflt,majflt,time,pri,nice,vsz,rss,etime,pcpu,pmem,args") (tramp-process-attributes-ps-format (pid . number) (euid . number) (user . string) (egid . number) (comm . 52) (state . 5) (ppid . number) (pgrp . number) (sess . number) (ttname . string) (tpgid . number) (minflt . number) (majflt . number) (time . tramp-ps-time) (pri . number) (nice . number) (vsize . number) (rss . number) (etime . tramp-ps-time) (pcpu . number) (pmem . number) (args))) (tramp-connection-local-busybox-ps-profile (tramp-process-attributes-ps-args "-o" "pid,user,group,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "stat=abcde" "-o" "ppid,pgid,tty,time,nice,etime,args") (tramp-process-attributes-ps-format (pid . number) (user . string) (group . string) (comm . 52) (state . 5) (ppid . number) (pgrp . number) (ttname . string) (time . tramp-ps-time) (nice . number) (etime . tramp-ps-time) (args))) (tramp-connection-local-bsd-ps-profile (tramp-process-attributes-ps-args "-acxww" "-o" "pid,euid,user,egid,egroup,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "state,ppid,pgid,sid,tty,tpgid,minflt,majflt,time,pri,nice,vsz,rss,etimes,pcpu,pmem,args") (tramp-process-attributes-ps-format (pid . number) (euid . number) (user . string) (egid . number) (group . string) (comm . 52) (state . string) (ppid . number) (pgrp . number) (sess . number) (ttname . string) (tpgid . number) (minflt . number) (majflt . number) (time . tramp-ps-time) (pri . number) (nice . number) (vsize . number) (rss . number) (etime . number) (pcpu . number) (pmem . number) (args))) (tramp-connection-local-default-shell-profile (shell-file-name . "/bin/sh") (shell-command-switch . "-c")) (tramp-connection-local-default-system-profile (path-separator . ":") (null-device . "/dev/null")) (eshell-connection-default-profile (eshell-path-env-list)))) '(custom-enabled-themes '(tmu-custom)) '(custom-safe-themes '("6dafb31ade9ff07229faaf05c41c2ae475c44731362b792f65f3930b1a2c9cfd" "dc77e008092a5a4aa6b6ed8e4826bebf8f2fb930a8de073bf7f458efd884cca8" "d1ff3e66028f9c527298580d2a64f9e3280f07f9e94d4dada72b67ef15069441" "3d4e3644e237a95683daa73e397c4c0d1ae06bbaaf8040104232591a28bc1315" "12a07bc38295e4b06a8965db261f51ea7ea61fbf91b3ef41298bbb549d1d9403" default)) '(ede-project-directories '("/home/tmu/Desktop/eway/sway" "/home/tmu/Desktop/eway/cage" "/home/tmu/Desktop/eway/wlroots" "/home/tmu/Desktop/eway/comp" "/home/tmu/Desktop/eway")) '(menu-bar-mode nil) '(package-selected-packages '(haskell-mode pyim-wbdict solarized-theme evil-commentary frog-jump-buffer evil-collection evil-easymotion sideline-flymake sideline-lsp tree-sitter company-go pyim-basedict evil-snipe evil-surround 2048-game evil ibuffer-project persp-mode-projectile-bridge persp-mode fish-mode chinese-conv esup buffer-move flymake-diagnostic-at-point emms-state emms-player-simple-mpv eshell-fringe-status esh-help eshell-vterm rustic benchmark-init ivy-prescient eat emms eyebrowse highlight dumb-jump volume workgroups async bongo hydra free-keys gxref fold-this xelb oauth2 imenu-anywhere popwin folding gdscript-mode)) '(scroll-bar-mode nil) '(tool-bar-mode nil) '(transient-mark-mode nil) '(whitespace-style '(face trailing tabs lines-tail missing-newline-at-eof indentation space-after-tab space-before-tab tab-mark))) ;; (use-package benchmark-init ;; :ensure t ;; :config ;; ;; To disable collection of benchmark data after init is done. ;; (add-hook 'after-init-hook 'benchmark-init/deactivate)) (setq gc-cons-threshold most-positive-fixnum) (add-hook 'emacs-startup-hook (lambda () (setq gc-cons-threshold (expt 2 23)))) (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize) ;; stuff I will always want (electric-pair-mode 1) (global-hl-line-mode 1) (global-auto-revert-mode 1) ;; spelling (require 'spell-fu) (setq ispell-personal-dictionary "/home/tmu/.aspell.en.pws") (add-hook 'text-mode-hook (lambda () (spell-fu-mode 1))) ;; dictionaries (define-prefix-command 'dict-map) (global-set-key (kbd "M-l") 'dict-map) (define-keymap :full nil :parent nil :suppress nil :keymap nil :name "dict-map" :prefix 'dict-map (kbd "w") 'sdcv-search-input (kbd "c") (lambda () (interactive) (activate-input-method 'pyim) (sdcv-search-input (read-from-minibuffer "Chinese Word: " nil nil nil nil nil t)) (activate-input-method nil))) ;; nice startup (require 'iimage) (setq inhibit-startup-screen t) (setq initial-scratch-message (concat (propertize ";; " 'invisible t) " ;; scratch for lisp evaluation and unsaved text ")) (add-hook 'emacs-startup-hook (lambda () (with-current-buffer "*scratch*" (iimage-mode 1)))) ;; transparancy (add-to-list 'default-frame-alist '(alpha-background . 90)) ; For all new frames (defun toggle-frame-transparency () "Toggle transparency." (interactive) (let ((alpha-transparency 90)) (if (eq alpha-transparency (frame-parameter nil 'alpha-background)) (set-frame-parameter nil 'alpha-background 100) (set-frame-parameter nil 'alpha-background alpha-transparency)))) ;; custom func keybinds (global-set-key (kbd "M-w") 'copy-region-as-kill) ;;make copying not flash cursor (defun wrap-region-paren () "Wraps the region in parens. Similar to pressing ( with the region active." (interactive) (let ((beg (region-beginning)) (end (region-end))) (save-excursion (goto-char beg) (insert "(") (goto-char (+ end 1)) (insert ")") ))) (global-set-key (kbd "M-(") 'wrap-region-paren) (defun zap-whitespace () "zaps the whitespace around the point in both directions" (interactive) (push-mark) (skip-chars-backward " \t\n") (push-mark) (skip-chars-forward " \t\n") (delete-region (mark) (point)) (pop-mark) (goto-char (mark)) (pop-mark)) (global-set-key (kbd "M-z") 'zap-whitespace) (defun wrap-sexp (&optional arg) "Wraps the following sexp in a pair of parens. Places inside the new pair, with prefix arg do the same backwards, pushing the mark. Does the same of ARG number sexps if given" (interactive "P") (message "%s" arg) (if arg (progn (push-mark) (insert-pair -1 ?\( ?\))) (insert-pair 1 ?\( ?\)))) (global-set-key (kbd "C-M-z") 'wrap-sexp) ;;move buffers between windows in a convient way (require 'buffer-move) (global-set-key (kbd "C-x -") 'buf-move-right) ;; quick window switching (global-set-key (kbd "M-o") 'other-window) ;; save/restore window config (setq current-saved-layout ?0) (seq-do (lambda (number) (let* ((string (int-to-string number)) (char (string-to-char string)) (key (kbd (concat "M-" string)))) (global-unset-key key) (global-set-key key (lambda () (interactive) (window-configuration-to-register current-saved-layout) (unless (window-configuration-p (car (get-register char))) (window-configuration-to-register char)) (jump-to-register char) (setq current-saved-layout char))))) '(0 1 2 3 4 5 6 7 8 9)) ;; get me a calculator (global-unset-key (kbd "M-c")) (global-set-key (kbd "M-c") 'calc) ;; buffer kills (global-unset-key (kbd "M-k")) (global-set-key (kbd "M-k") 'kill-current-buffer) (global-set-key (kbd "M-K") 'kill-buffer-and-window) ;; latex stuff (require 'tex-mode) (define-key latex-mode-map (kbd "C-c m") (lambda () (interactive) (push-mark) (insert "\\[\n\n\\]") (indent-region (mark) (point)) (pop-mark) (previous-line) (indent-for-tab-command) )) (add-hook 'tex-mode-hook (lambda () (setq-local compile-command (concat "pdflatex " (shell-quote-argument (buffer-file-name)))) (add-hook 'after-save-hook 'recompile 0 t))) ;; better minibuffer complete (use-package vertico :init (vertico-mode) (vertico-flat-mode) (setq vertico-cycle t)) (use-package orderless :ensure t :custom (completion-styles '(orderless partial-completion flex basic)) (orderless-matching-styles '(orderless-literal orderless-regexp orderless-prefixes)) ;; (orderless-skip-highlighting t) ;; (selectrum-highlight-candidates-function #'orderless-highlight-matches) ) (use-package which-key :ensure t :init (which-key-mode)) ;; better in-buffer completion ;; (require 'company) ;; (add-hook 'prog-mode-hook (lambda () ;; (company-mode 1))) ;; (global-unset-key (kbd "M-/")) ;; (global-set-key (kbd "M-/") 'company-complete) ;; mail stuff (autoload 'mu4e "~/.emacs.d/mail.el" "mu4e stuff" t) ;; music ;; (autoload 'youtube-dl-enqueue "~/.emacs.d/youtube-dl.el" "download from youtube" t) ;; (emms-all) ;; (require 'emms-info-native) ;; (defun emms-file-info (track) ;; "Sets info of a track based on it's file name. Expects Artist - Album - Track.ext." ;; (when (emms-track-file-p track) ;; (let* ((file-name (emms-track-name track)) ;; (tags (string-split (car (seq-reverse (string-split file-name "/"))) " - "))) ;; (emms-track-set track 'info-artist (car tags)) ;; (emms-track-set track 'info-album (car (cdr tags))) ;; (emms-track-set track 'info-title (car (cdr (cdr tags))))))) ;; (setq emms-player-list '(emms-player-mpv) ;; emms-info-functions '(emms-file-info) ;; emms-source-file-directory-tree-function 'emms-source-file-directory-tree-find) ;; (require 'emms-state) ;; ;; see single header, loaded AFTER this for more about emms-state ;; allow using emacsclient (load "server") (unless (server-running-p) (server-start)) ;; mutli frame stuff (global-set-key (kbd "C-x C-C") 'save-buffers-kill-terminal) (global-set-key (kbd "C-x C-c") (lambda () (interactive) (if (eq 1 (length (frame-list))) ;; sole frame, exit (save-buffers-kill-terminal) (delete-frame)))) ;; don't ask about killing buffers (setq kill-buffer-query-functions (delq 'process-kill-buffer-query-function kill-buffer-query-functions)) ;; don't ask about kill processes (setq confirm-kill-processes nil) (autoload 'async-eval "~/.emacs.d/async-eval.el" "evaluate in another emacs process" t) ;; evil mode stuff (setq evil-want-keybinding nil evil-want-integration t) ;; evil-want-C-d-scroll nil ;; evil-want-C-w-delete nil ;; evil-disable-insert-state-bindings t ;; evil-respect-visual-line-mode t (require 'evil) (when (require 'evil-collection nil t) (evil-collection-init)) (evil-mode 1) (evilem-default-keybindings "SPC") (define-key evil-motion-state-map (kbd "TAB") 'indent-for-tab-command) (use-package evil-surround :ensure t :config (global-evil-surround-mode 1)) (use-package evil-snipe :ensure t :config (evil-snipe-mode +1) (evil-snipe-override-mode +1) (setq evil-snipe-scope 'buffer) (evil-define-key 'visual evil-snipe-local-mode-map "z" 'evil-snipe-s) (evil-define-key 'visual evil-snipe-local-mode-map "Z" 'evil-snipe-S)) (define-key evil-insert-state-map (kbd "C-d") 'delete-char) (define-key evil-insert-state-map (kbd "C-e") 'move-end-of-line) (define-key evil-insert-state-map (kbd "C-a") 'move-beginning-of-line) (define-key evil-normal-state-map (kbd "M-.") 'xref-find-definitions) (define-key evil-normal-state-map (kbd "C-t") 'transpose-chars) (add-hook 'prog-mode-hook (lambda () (modify-syntax-entry ?_ "w") )) ;;; sashka bindings ;; movement (defun evil-window-split-and-switch () "Split the window vertically and switch to the new buffer." (interactive) (evil-window-split) (other-window 1)) (defun evil-window-vsplit-and-switch () "Split the window horizontally and switch to the new buffer." (interactive) (evil-window-vsplit) (other-window 1)) (evil-define-key 'normal global-map (kbd "SPC i") 'imenu) (evil-define-key 'normal global-map (kbd "SPC RET") 'vterm) (evil-define-key 'normal global-map (kbd "SPC v") 'vterm) (evil-define-key 'normal global-map (kbd "SPC !") 'abort-recursive-edit) (evil-define-key 'normal global-map (kbd "SPC f f") 'find-file) (evil-define-key 'normal global-map (kbd "SPC SPC SPC j") 'evil-window-split-and-switch) (evil-define-key 'normal global-map (kbd "SPC SPC SPC k") 'evil-window-split-and-switch) (evil-define-key 'normal global-map (kbd "SPC SPC SPC h") 'evil-window-vsplit-and-switch) (evil-define-key 'normal global-map (kbd "SPC SPC SPC l") 'evil-window-vsplit-and-switch) (evil-define-key 'normal global-map (kbd "SPC SPC h") 'evil-window-left) (evil-define-key 'normal global-map (kbd "SPC SPC j") 'evil-window-down) (evil-define-key 'normal global-map (kbd "SPC SPC k") 'evil-window-up) (evil-define-key 'normal global-map (kbd "SPC SPC l") 'evil-window-right) (evil-define-key 'normal global-map (kbd "SPC SPC w") 'delete-window) (evil-define-key 'normal global-map (kbd "SPC SPC q") 'delete-window) (evil-define-key 'normal global-map (kbd "SPC SPC b") 'balance-windows) (evil-define-key 'normal global-map (kbd "SPC s s") 'save-buffer) (evil-define-key 'normal global-map (kbd "SPC s f") 'counsel-find-file) (evil-define-key 'normal global-map (kbd "SPC s r") 'counsel-rg) (evil-define-key 'normal global-map (kbd "SPC ;") 'frog-jump-buffer) ;; frog jump stuff (add-hook 'frog-menu-after-init-hook (lambda () (setq-local avy-background nil))) (load-file "~/.emacs.d/coding-config.el") ;; (load-file "~/.emacs.d/single-header.el") (put 'dired-find-alternate-file 'disabled nil) (put 'upcase-region 'disabled nil) (put 'list-timers 'disabled nil) (put 'narrow-to-region 'disabled nil) ;; no tabs (setq-default indent-tabs-mode nil) ;; input method stuff (setq rime-translate-keybindings '("C-f" "C-b" "C-n" "C-p" "C-g" "" "" "" "" "" "" "")) (setq rime-share-data-dir "~/.local/share/fcitx5/rime") (setq rime-show-candidate 'popup) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(frog-menu-posframe-background-face ((t (:background "RoyalBlue4")))) '(minibuffer-prompt ((t (:background "gray10" :foreground "cyan" :box nil :weight bold)))) '(vterm-color-blue ((t (:inherit ansi-color-bright-green))))) (put 'downcase-region 'disabled nil)