;;; mir-defuns.el --- custom-defined functions ;;; Commentary: ;; Some functions to run when loading packages... ;;; Code: (defun mir/evil-config () "A batch of commands to run as the :config of evil's `use-package'. Made solely to reduce lines in the init-file." ;; Visual moving (defun move-screen-down-line () "Scroll down line but keep cursor in same visual position." (interactive) (evil-previous-line) (scroll-down-line)) (defun move-screen-up-line () "Scroll up line but keep cursor in same visual position." (interactive) (evil-next-line) (scroll-up-line)) ;; Search showing (defun mir/search-and-rebalance (&optional &rest flush) (evil-scroll-line-to-center (car flush))) (advice-add 'evil-search-next :filter-return #'mir/search-and-rebalance) (add-hook 'isearch-mode-end-hook #'mir/search-and-rebalance)) (defun mir/visual-setup () "Commands to run when setting up any display. To be called in use-package declarations for color schemes." (tooltip-mode -1) (menu-bar-mode -1) (set-face-attribute 'fixed-pitch nil :family "MesloLGS Nerd Font") (set-face-attribute 'default nil :family "MesloLGS Nerd Font") (set-face-attribute 'variable-pitch nil :inherit 'default :family "sans serif" :height (/ 1.5 1.3)) (setq window-divider-default-places t) (setq right-divider-width 5) (setq ring-bell-function 'ignore) (add-to-list 'initial-frame-alist '(alpha-background . 65)) (add-to-list 'default-frame-alist '(alpha-background . 65)) (add-to-list 'default-frame-alist '(cursor-color . "white")) (add-to-list 'default-frame-alist '(fullscreen . maximized)) ;; see also https://emacs.stackexchange.com/questions/7228/nice-tty-window-borders-in-24-4 (unless (display-graphic-p) (let ((display-table (or standard-display-table (make-display-table)))) (set-display-table-slot display-table 'vertical-border (make-glyph-code ?│)) (setq standard-display-table display-table)))) (defun mir/graphical-setup () "Commands to run at the beginning of init when on a graphical display. This prevents errors in termux and speeds up init when editing from the console." ;; hide gui scrollbars and menubar etc ;; (scroll-bar-mode -1) ;; use `yascroll' instead (setq scroll-bar-adjust-thumb-portion nil) (tool-bar-mode 0) (menu-bar-mode 0) (set-fringe-mode 8) ;; diable stupid file open box thingy (setq use-file-dialog nil) (setq use-dialog-box nil) ;; Pixel scrolling. Only in emacs 29+... (if (>= (string-to-number emacs-version) 29) (pixel-scroll-precision-mode t) (pixel-scroll-mode t)) ;; Size of text. おまえ わ もう しんでいる. (let* ((resy (display-pixel-height)) (font-height (/ resy 8))) ; gonna be different on diff machines 💀 (set-face-attribute 'fixed-pitch nil :height font-height) (set-face-attribute 'default nil :height font-height) (set-face-attribute 'variable-pitch nil :height (+ font-height 10)))) (defun toggle-ja-input () "Switch between english and japanese. Not broken." (interactive) (if (eq current-input-method 'japanese) (setq current-input-method 'japanese-ascii) (setq current-input-method 'japanese))) (defun turn-off-line-numbers () "A tiny wrapper around `display-line-numbers-mode' or `linum'. For use in hooks." (interactive) (if (bound-and-true-p display-line-numbers-mode) (display-line-numbers-mode -1)) (if (fboundp #'linum-mode) (linum-mode -1)) (if (fboundp #'linum-relative-mode) (linum-relative-mode -1)) (if (fboundp #'nlinum-mode) (nlinum-mode -1)) (if (fboundp #'nlinum-relative-mode) (nlinum-relative-mode -1))) (defun mir/terminal-setup () "A batch of commands to run when opening anything that looks like a terminal. For instance: - Shell - (ansi-)term - eshell - vterm - Maybe SLIME too." (turn-off-line-numbers)) ;; This one line cost me over an hour of frustration... (provide 'mir-defuns) ;;; mir-defuns.el ends here