From e116a6b5768081bfd9fcf1cefa1a9afc2df2e704 Mon Sep 17 00:00:00 2001 From: Zelong Kuang Date: Mon, 22 Dec 2025 10:51:46 +1100 Subject: [PATCH] Update --- init.el | 9 ++++- lisp/init-edit.el | 46 ++++++++++++++++++--- lisp/init-god.el | 6 +++ lisp/init-hydra.el | 54 +++++++++++++++++++++++++ lisp/init-lsp.el | 5 ++- lisp/init-org.el | 68 ++++++++++++++++++++++++++++++++ lisp/init-ui.el | 5 +-- lisp/init-window.el | 59 +++++++++++++++++++++++++++ snippets/emacs-lisp-mode/provide | 6 +++ 9 files changed, 247 insertions(+), 11 deletions(-) create mode 100644 lisp/init-god.el create mode 100644 lisp/init-hydra.el create mode 100644 lisp/init-window.el create mode 100644 snippets/emacs-lisp-mode/provide diff --git a/init.el b/init.el index 2e8c0ec..c1552e1 100644 --- a/init.el +++ b/init.el @@ -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) diff --git a/lisp/init-edit.el b/lisp/init-edit.el index a5cdc4c..886c16d 100644 --- a/lisp/init-edit.el +++ b/lisp/init-edit.el @@ -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-" . mc/add-cursor-on-click) + ("C-S-" . 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) + ("" 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) diff --git a/lisp/init-god.el b/lisp/init-god.el new file mode 100644 index 0000000..a8fbc15 --- /dev/null +++ b/lisp/init-god.el @@ -0,0 +1,6 @@ +;; -*- lexical-binding: t; -*- + +(use-package god-mode + :bind ("" . god-local-mode)) + +(provide 'init-god) diff --git a/lisp/init-hydra.el b/lisp/init-hydra.el new file mode 100644 index 0000000..9728a61 --- /dev/null +++ b/lisp/init-hydra.el @@ -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 ("" . 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) + diff --git a/lisp/init-lsp.el b/lisp/init-lsp.el index ba10a1c..ba5d572 100644 --- a/lisp/init-lsp.el +++ b/lisp/init-lsp.el @@ -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 diff --git a/lisp/init-org.el b/lisp/init-org.el index 3c1735c..3a19744 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -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 "" winner-undo "winner undo") + ("" winner-redo "winner redo"))))) + +(provide 'init-window) diff --git a/snippets/emacs-lisp-mode/provide b/snippets/emacs-lisp-mode/provide new file mode 100644 index 0000000..da9648e --- /dev/null +++ b/snippets/emacs-lisp-mode/provide @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: provide +# key: provide +# -- + +(provide '${1:`(file-name-base (or (buffer-file-name) ""))`})$0 \ No newline at end of file