Rosenthal/modules/rosenthal/examples/emacs/init-interface.el
2026-02-06 14:38:59 +08:00

132 lines
3.3 KiB
EmacsLisp

;;; -*- lexical-binding: t -*-
;;; SPDX-FileCopyrightText: 2025 Hilton Chain <hako@ultrarare.space>
;;;
;;; SPDX-License-Identifier: GPL-3.0-or-later
(use-package emacs
:custom
(blink-cursor-mode nil)
(enable-recursive-minibuffers t)
(inhibit-splash-screen t)
(uniquify-buffer-name-style 'forward)
;; Exclude unavailable completions.
(read-extended-command-predicate 'command-completion-default-include-p)
;; Case-insensitive completion.
(completion-ignore-case t)
(read-buffer-completion-ignore-case t)
(read-file-name-completion-ignore-case t)
:bind
([remap list-buffers] . switch-to-buffer)
:hook
(prog-mode . display-line-numbers-mode)
;; Scrolling enhancement.
(after-init . pixel-scroll-precision-mode)
;; Recursive minibuffers indicatior.
(after-init . minibuffer-depth-indicate-mode)
;; Save minibuffer history.
(after-init . savehist-mode)
;; `fill-column' indicator.
(prog-mode . display-fill-column-indicator-mode))
;; Theming
(use-package emacs
:custom
(fringe-mode 0)
(modus-themes-italic-constructs t)
(scroll-bar-mode nil)
(tool-bar-mode nil)
(tooltip-mode nil)
:config
(load-theme 'modus-operandi-tinted :no-confirm)
:hook
(after-init . menu-bar-mode))
;;guix:emacs-corfu
(use-package corfu
:custom
;; Auto-completion.
(corfu-auto t)
(corfu-auto-delay 0.3)
:config
;; Free the `RET' key for less intrusive behavior.
(keymap-unset corfu-map "RET")
:hook
(after-init . global-corfu-mode))
;;guix:emacs-doom-modeline
(use-package doom-modeline
:custom
(doom-modeline-icon nil)
(doom-modeline-height 18)
:hook
(after-init . doom-modeline-mode))
;;guix:emacs-helpful
(use-package helpful
:bind
([remap describe-function] . helpful-callable)
([remap describe-variable] . helpful-variable)
([remap describe-key] . helpful-key)
([remap describe-command] . helpful-command)
([remap describe-symbol] . helpful-symbol)
("C-c C-d" . helpful-at-point))
;;guix:emacs-hl-todo
(use-package hl-todo
:custom
(hl-todo-highlight-punctuation ":")
:hook
(prog-mode . hl-todo-mode))
(use-package isearch
:custom
(isearch-lazy-count t)
(isearch-wrap-pause 'no-ding)
(regexp-search-ring-max 200)
(search-ring-max 200))
;;guix:emacs-mwim
(use-package mwim
:bind
([remap move-beginning-of-line] . mwim-beginning)
([remap move-end-of-line] . mwim-end))
;;guix:emacs-orderless
(use-package orderless
:custom
(completion-styles '(orderless basic))
(completion-category-overrides '((file (styles basic partial-completion))))
(orderless-matching-styles '(orderless-literal orderless-flex orderless-regexp)))
(use-package paren
:custom
(show-paren-context-when-offscreen 'overlay)
:hook
(after-init . show-paren-mode))
;;guix:emacs-rainbow-delimiters
(use-package rainbow-delimiters
:hook
(prog-mode . rainbow-delimiters-mode))
;;guix:emacs-vertico
(use-package vertico
:hook
(after-init . vertico-mode))
(use-package vertico-directory
:after (vertico)
:bind
(:map vertico-map
("RET" . vertico-directory-enter)
("DEL" . vertico-directory-delete-char)
("M-DEL" . vertico-directory-delete-word))
:hook
(rfn-eshadow-update-overlay . vertico-directory-tidy))
(use-package which-key
:config
(which-key-setup-side-window-right-bottom)
:hook
(after-init . which-key-mode))