This commit is contained in:
Zelong Kuang
2025-12-22 10:51:46 +11:00
parent 697231fdec
commit e116a6b576
9 changed files with 247 additions and 11 deletions

View File

@@ -1,13 +1,20 @@
;; -*- lexical-binding: t -*-
(require 'init-better-default)
(require 'init-hydra)
(require 'init-utils)
(require 'init-completion)
;; (require 'init-meow)
(require 'init-edit)
(require 'init-window)
(require 'init-ui)
;; (require 'init-meow)
(require 'init-bindings)
(require 'init-workspace)
(require 'init-dired)
;; (require 'init-treemacs)

View File

@@ -6,13 +6,9 @@
;; :config
;; (require 'smartparens-config))
(setq electric-pair-inhibit-predicate 'electric-pair-conservative-inhibit)
(electric-pair-mode t)
(use-package ace-window
:hook (ace-window-mode . ace-window-posframe-mode)
:bind ("M-o" . ace-window))
;; Yasnippet settings
(use-package yasnippet
:ensure t
@@ -39,5 +35,45 @@
(setq-default abbrev-mode t)
(setq abbrev-file-name (expand-file-name "abbrev.el" user-emacs-directory))
(use-package autorevert
:ensure nil
:diminish
:hook (after-init . global-auto-revert-mode))
(use-package multiple-cursors
:hook elpaca-after-init
:bind (("C-c m" . multiple-cursors-hydra/body)
("C-S-c C-S-c" . mc/edit-lines)
("C->" . mc/mark-next-like-this)
("C-<" . mc/mark-previous-like-this)
("C-c C-<" . mc/mark-all-like-this)
("C-M->" . mc/skip-to-next-like-this)
("C-M-<" . mc/skip-to-previous-like-this)
("s-<mouse-1>" . mc/add-cursor-on-click)
("C-S-<mouse-1>" . mc/add-cursor-on-click)
:map mc/keymap
("C-|" . mc/vertical-align-with-space))
:pretty-hydra
((:color amaranth :quit-key ("q" "C-g"))
("Up"
(("p" mc/mark-previous-like-this "prev")
("P" mc/skip-to-previous-like-this "skip")
("M-p" mc/unmark-previous-like-this "unmark")
("|" mc/vertical-align "align with input CHAR"))
"Down"
(("n" mc/mark-next-like-this "next")
("N" mc/skip-to-next-like-this "skip")
("M-n" mc/unmark-next-like-this "unmark"))
"Misc"
(("l" mc/edit-lines "edit lines" :exit t)
("a" mc/mark-all-like-this "mark all" :exit t)
("s" mc/mark-all-in-region-regexp "search" :exit t)
("<mouse-1>" mc/add-cursor-on-click "click"))
"% 2(mc/num-cursors) cursor%s(if (> (mc/num-cursors) 1) \"s\" \"\")"
(("0" mc/insert-numbers "insert numbers" :exit t)
("A" mc/insert-letters "insert letters" :exit t)))))
(use-package smart-region
:hook (after-init . smart-region-on))
(provide 'init-edit)

6
lisp/init-god.el Normal file
View File

@@ -0,0 +1,6 @@
;; -*- lexical-binding: t; -*-
(use-package god-mode
:bind ("<escape>" . god-local-mode))
(provide 'init-god)

54
lisp/init-hydra.el Normal file
View File

@@ -0,0 +1,54 @@
;; -*- lexical-binding: t; -*-
(use-package hydra
:hook ((emacs-lisp-mode . hydra-add-imenu)))
(use-package pretty-hydra
:ensure (:wait t)
:hook (emacs-lisp-mode . (lambda ()
(add-to-list
'imenu-generic-expression
'("Hydras"
"^.*(\\(pretty-hydra-define\\) \\([a-zA-Z-]+\\)"
2))))
:bind ("<f6>" . toggle-hydras/body)
:init
(with-no-warnings
(pretty-hydra-define toggle-hydras (:color amaranth :quit-key ("q" "C-g"))
("Basic"
(("n" (cond ((fboundp 'display-line-numbers-mode)
(display-line-numbers-mode (if display-line-numbers-mode -1 1)))
((fboundp 'gblobal-linum-mode)
(global-linum-mode (if global-linum-mode -1 1))))
"line number"
:toggle (or (bound-and-true-p display-line-numbers-mode)
(bound-and-true-p global-linum-mode)))
("e" electric-pair-mode "electric pair" :toggle t)
("c" flyspell-mode "spell check" :toggle t)
("s" prettify-symbols-mode "pretty symbol" :toggle t)
("l" global-page-break-lines-mode "page break lines" :toggle t)
("b" display-battery-mode "battery" :toggle t)
("i" display-time-mode "time" :toggle t)
("m" doom-modeline-mode "modern mode-line" :toggle t))
"Highlight"
(("h l" global-hl-line-mode "line" :toggle t)
("h p" show-paren-mode "paren" :toggle t)
("h w" (setq-default show-trailing-whitespace (not show-trailing-whitespace))
"whitespace" :toggle show-trailing-whitespace)
("h d" rainbow-delimiters-mode "delimiter" :toggle t)
("h t" global-hl-todo-mode "todo" :toggle t))
"Program"
(("f" flymake-mode "flymake" :toggle t)
("O" hs-minor-mode "hideshow" :toggle t)
("u" subword-mode "subword" :toggle t)
("W" which-function-mode "which function" :toggle t)
("E" toggle-debug-on-error "debug on error" :toggle (default-value 'debug-on-error))
("Q" toggle-debug-on-quit "debug on quit" :toggle (default-value 'debug-on-quit))
("v" global-diff-hl-mode "gutter" :toggle t)
("V" diff-hl-flydiff-mode "live gutter" :toggle t)
("M" diff-hl-margin-mode "margin gutter" :toggle t)
("D" diff-hl-dired-mode "dired gutter" :toggle t))
))))
(provide 'init-hydra)

View File

@@ -1,6 +1,9 @@
;;; init-lsp ---
;;; Commentary:
;; -*- lexical-binding: t; -*-
(use-package flymake)
(use-package flymake
:hook (prog-mode . flymake-mode))
(use-package jsonrpc)
(use-package eglot

View File

@@ -11,7 +11,75 @@
:branch "dev")
:hook (org-mode . org-indent-mode)
:hook (org-mode . org-cdlatex-mode)
:pretty-hydra
;; See `org-structure-template-alist'
((:color blue :quit-key ("q" "C-g"))
("Basic"
(("a" (hot-expand "<a") "ascii")
("c" (hot-expand "<c") "center")
("C" (hot-expand "<C") "comment")
("x" (hot-expand "<e") "example")
("E" (hot-expand "<E") "export")
("h" (hot-expand "<h") "html")
("l" (hot-expand "<l") "latex")
("n" (hot-expand "<n") "note")
("o" (hot-expand "<q") "quote")
("v" (hot-expand "<v") "verse"))
"Head"
(("i" (hot-expand "<i") "index")
("A" (hot-expand "<A") "ASCII")
("I" (hot-expand "<I") "INCLUDE")
("H" (hot-expand "<H") "HTML")
("L" (hot-expand "<L") "LaTeX"))
"Source"
(("s" (hot-expand "<s") "src")
("e" (hot-expand "<s" "emacs-lisp") "emacs-lisp")
("y" (hot-expand "<s" "python :results output") "python")
("p" (hot-expand "<s" "perl") "perl")
("w" (hot-expand "<s" "powershell") "powershell")
("r" (hot-expand "<s" "ruby") "ruby")
("S" (hot-expand "<s" "sh") "sh")
("g" (hot-expand "<s" "go :imports '\(\"fmt\"\)") "golang"))
"Misc"
(("m" (hot-expand "<s" "mermaid :file chart.png") "mermaid")
("u" (hot-expand "<s" "plantuml :file chart.png") "plantuml")
("Y" (hot-expand "<s" "ipython :session :exports both :results raw drawer\n$0") "ipython")
("P" (progn
(insert "#+HEADERS: :results output :exports both :shebang \"#!/usr/bin/env perl\"\n")
(hot-expand "<s" "perl")) "Perl tangled")
("<" self-insert-command "ins"))))
:bind (:map org-mode-map
("<" . (lambda ()
"Insert org template."
(interactive)
(if (or (region-active-p) (looking-back "^\s*" 1))
(org-hydra/body)
(self-insert-command 1)))))
:config
;; For hydra
(defun hot-expand (str &optional mod)
"Expand org template.
STR is a structure template string recognised by org like <s. MOD is a
string with additional parameters to add the begin line of the
structure element. HEADER string includes more parameters that are
prepended to the element after the #+HEADER: tag."
(let (text)
(when (region-active-p)
(setq text (buffer-substring (region-beginning) (region-end)))
(delete-region (region-beginning) (region-end)))
(insert str)
(if (fboundp 'org-try-structure-completion)
(org-try-structure-completion) ; < org 9
(progn
;; New template expansion since org 9
(require 'org-tempo nil t)
(org-tempo-complete-tag)))
(when mod (insert mod) (forward-line))
(when text (insert text))))
;; (org-capture-init)
(add-to-list 'org-modules 'org-habit)
(setq org-directory "~/org/")

View File

@@ -1,6 +1,6 @@
;; -*- lexical-binding: t -*-
(setq idle-update-delay 1.0)
;; (setq idle-update-delay 1.0)
(setq-default cursor-in-non-selected-windows nil)
(setq highlight-nonselected-windows nil)
@@ -73,9 +73,6 @@
(use-package default-text-scale
:hook (elpaca-after-init . default-text-scale-mode)
:bind (:map default-text-scale-mode-map
("s-=" . default-text-scale-increase)
("s--" . default-text-scale-decrease)
("s-0" . default-text-scale-reset)
("C-s-=" . default-text-scale-increase)
("C-s--" . default-text-scale-decrease)
("C-s-0" . default-text-scale-reset)))

59
lisp/init-window.el Normal file
View File

@@ -0,0 +1,59 @@
;; -*- lexical-binding: t; -*-
;; Restore old window configurations
(use-package winner
:ensure nil
:commands (winner-undo winner-redo)
:hook elpaca-after-init
:init (setq winner-boring-buffers '("*Completions*"
"*Compile-Log*"
"*inferior-lisp*"
"*Fuzzy Completions*"
"*Apropos*"
"*Help*"
"*cvs*"
"*Buffer List*"
"*Ibuffer*"
"*esh command on file*")))
(use-package ace-window
:hook (emacs-startup . ace-window-display-mode)
:bind (([remap other-window] . ace-window)
("C-c C-w" . ace-window-hydra/body))
:pretty-hydra
(
;; (:title (pretty-hydra-title "Window Management" 'faicon "nf-fa-th")
;; :foreign-keys warn :quit-key ("q" "C-g"))
("Actions"
(("TAB" other-window "switch")
("x" ace-delete-window "delete")
("X" ace-delete-other-windows "delete other" :exit t)
("s" ace-swap-window "swap")
("a" ace-select-window "select" :exit t)
("m" toggle-frame-maximized "maximize" :exit t)
("u" toggle-frame-fullscreen "fullscreen" :exit t))
"Resize"
(("h" shrink-window-horizontally "")
("j" enlarge-window "")
("k" shrink-window "")
("l" enlarge-window-horizontally "")
("n" balance-windows "balance"))
"Split"
(("r" split-window-right "horizontally")
("R" split-window-horizontally-instead "horizontally instead")
("v" split-window-below "vertically")
("V" split-window-vertically-instead "vertically instead")
("t" toggle-window-split "toggle"))
"Zoom"
(("+" text-scale-increase "in")
("=" text-scale-increase "in")
("-" text-scale-decrease "out")
("0" (text-scale-increase 0) "reset"))
"Misc"
(("o" set-frame-font "frame font")
("f" make-frame-command "new frame")
("d" delete-frame "delete frame")
("<left>" winner-undo "winner undo")
("<right>" winner-redo "winner redo")))))
(provide 'init-window)

View File

@@ -0,0 +1,6 @@
# -*- mode: snippet -*-
# name: provide
# key: provide
# --
(provide '${1:`(file-name-base (or (buffer-file-name) ""))`})$0