emacs/lisp/mir-defuns.el
2024-05-26 17:17:28 -08:00

124 lines
4.6 KiB
EmacsLisp

;;; 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 "Ubuntu"
:height 140) ;jank? jank
(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. おまえ わ もう しんでいる.
(if (executable-find "neofetch")
(let* ((resolution (mapcar #'string-to-number
(split-string
(cadr (split-string
(shell-command-to-string
"neofetch resolution"))) "x")))
(resx (car resolution))
(resy (cadr resolution))
(font-height (/ resy 11)))
(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