diff --git a/.lsp-session-v1 b/.lsp-session-v1 deleted file mode 100644 index 621bb99..0000000 --- a/.lsp-session-v1 +++ /dev/null @@ -1 +0,0 @@ -#s(lsp-session ("/Users/zelongk/.emacs.d" "/Users/zelongk/programming/ocaml" "/Users/zelongk/uni/undergrad/26s1") nil #s(hash-table test equal) #s(hash-table test equal) #s(hash-table test equal)) \ No newline at end of file diff --git a/init.el b/init.el index aeb470a..0c78021 100644 --- a/init.el +++ b/init.el @@ -17,8 +17,8 @@ (delete-dups (append file-name-handler-alist default-handlers)))) 101))) -;; (require 'init-elpaca) -(require 'init-straight) +(require 'init-elpaca) +;; (require 'init-straight) (require 'init-gc) (require 'init-better-default) (require 'init-hydra) diff --git a/lisp/init-better-default.el b/lisp/init-better-default.el index fb2036a..d8b66f6 100644 --- a/lisp/init-better-default.el +++ b/lisp/init-better-default.el @@ -1,17 +1,7 @@ ;; -*- lexical-binding: t -*- (use-package benchmark-init :demand t - :hook (after-init . benchmark-init/deactivate)) - -(let ( - ;; 加载的时候临时增大`gc-cons-threshold'以加速启动速度。 - (gc-cons-threshold most-positive-fixnum) - ;; 清空避免加载远程文件的时候分析文件。 - (file-name-handler-alist nil)) - (require 'benchmark-init-modes) - (require 'benchmark-init) - (benchmark-init/activate) - ) + :hook (elpaca-elpaca-after-init . benchmark-init/deactivate)) ;; Load some component of large package (org, magit etc.) before complete mount (defvar elemacs-incremental-packages '(t) @@ -98,20 +88,22 @@ If this is a daemon session, load them all immediately instead." (exec-path-from-shell-initialize))) (setq custom-file (expand-file-name "~/.emacs.d/custom.el")) -(add-hook 'after-init-hook (lambda () (load custom-file 'no-error 'no-message))) +(add-hook 'elpaca-elpaca-after-init-hook (lambda () (load custom-file 'no-error 'no-message))) ;; Start server (use-package server + :ensure nil :hook (emacs-startup . (lambda () (unless server-mode (server-mode 1))))) ;; Save place (use-package saveplace - :hook (after-init . save-place-mode)) + :ensure nil + :hook (elpaca-elpaca-after-init . save-place-mode)) (use-package display-line-numbers - :straight nil + :ensure nil :hook (text-mode . display-line-numbers-mode) :hook (prog-mode . display-line-numbers-mode) :config @@ -125,8 +117,9 @@ If this is a daemon session, load them all immediately instead." (add-hook mode (lambda () (display-line-numbers-mode -1)))) (setq display-line-numbers-type 'relative) ) + (use-package del-trailing-white - :straight nil + :ensure nil :hook ((prog-mode markdown-mode conf-mode) . enable-trailing-whitespace) :init (setq-default show-trailing-whitespace nil) @@ -137,21 +130,21 @@ If this is a daemon session, load them all immediately instead." ) (use-package subword - :straight nil + :ensure nil :diminish :hook (prog-mode minibuffer-setup)) (use-package paren - :straight nil - :hook (after-init . show-paren-mode)) + :ensure nil + :hook (elpaca-elpaca-after-init . show-paren-mode)) ;; ;; Show trailing whitespace only in prog-mode and text-mode ;; (add-hook 'prog-mode-hook (lambda () (setq show-trailing-whitespace t))) ;; (add-hook 'text-mode-hook (lambda () (setq show-trailing-whitespace t))) (use-package recentf - :straight nil - :hook (after-init . recentf-mode) + :ensure nil + :hook (elpaca-after-init . recentf-mode) :init (setq recentf-max-saved-items 500 recentf-exclude @@ -166,8 +159,8 @@ If this is a daemon session, load them all immediately instead." (add-to-list 'recentf-filename-handlers #'abbreviate-file-name)) (use-package savehist - :straight nil - :hook (after-init . savehist-mode) + :ensure nil + :hook (elpaca-elpaca-after-init . savehist-mode) :init (setq enable-recursive-minibuffers t ; Allow commands in minibuffers history-length 1000 savehist-additional-variables '(mark-ring @@ -226,7 +219,7 @@ If this is a daemon session, load them all immediately instead." (use-package browse-kill-ring :bind ("C-c k" . browse-kill-ring) - :hook (after-init . browse-kill-ring-default-keybindings) + :hook (elpaca-elpaca-after-init . browse-kill-ring-default-keybindings) :init (setq browse-kill-ring-separator "────────────────" browse-kill-ring-separator-face 'shadow)) @@ -234,7 +227,7 @@ If this is a daemon session, load them all immediately instead." :init (setq scroll-conservatively 3 scroll-margin 0) - :hook (after-init . ultra-scroll-mode)) + :hook (elpaca-elpaca-after-init . ultra-scroll-mode)) (use-package helpful :bind (([remap describe-function] . helpful-callable) @@ -276,15 +269,14 @@ If this is a daemon session, load them all immediately instead." (setq tramp-default-method "rpc") -(use-package tramp - :straight (:type built-in)) +(use-package tramp) (use-package tramp-hlo :config (tramp-hlo-setup)) (use-package tramp-rpc - :straight (tramp-rpc :host github :repo "ArthurHeymans/emacs-tramp-rpc") + :ensure (tramp-rpc :host github :repo "ArthurHeymans/emacs-tramp-rpc") :config (tramp-rpc-magit-enable) (tramp-rpc-projectile-enable)) diff --git a/lisp/init-cc.el b/lisp/init-cc.el index 36b0ba1..f8ad0f5 100644 --- a/lisp/init-cc.el +++ b/lisp/init-cc.el @@ -1,13 +1,13 @@ ;; -*- lexical-binding: t; -*- (use-package cc-mode - :straight nil + :ensure nil :init (setq-default c-basic-offset 2)) (when (treesit-available-p) (use-package c-ts-mode - :straight nil + :ensure nil :functions treesit-available-p :init (setq c-ts-mode-indent-offset 2) diff --git a/lisp/init-coding.el b/lisp/init-coding.el index 4fbe1f0..37bc3ce 100644 --- a/lisp/init-coding.el +++ b/lisp/init-coding.el @@ -10,43 +10,16 @@ (setq xref-show-definitions-function #'xref-show-definitions-completing-read xref-show-xrefs-function #'xref-show-definitions-completing-read)) -(use-package apheleia - :diminish - :hook (after-init . apheleia-global-mode)) +(use-package apheleia :diminish) (use-package editorconfig :diminish - :hook after-init) - -(use-package cask-mode) -(use-package csv-mode) -(use-package cue-sheet-mode) -(use-package dart-mode) -(use-package lua-mode) -(use-package v-mode) -(use-package vimrc-mode) -(use-package julia-ts-mode) -(use-package scala-ts-mode) -(use-package yaml-ts-mode - - :mode ("\\.yaml\\'" . yaml-ts-mode)) - -;; Fish shell mode and auto-formatting -(use-package fish-mode - :commands fish_indent-before-save - :defines eglot-server-programs - :hook (fish-mode . (lambda () - "Integrate `fish_indent` formatting with Fish shell mode." - (add-hook 'before-save-hook #'fish_indent-before-save))) - :config - (with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs - '(fish-mode . ("fish-lsp" "start"))))) + :hook elpaca-after-init) (use-package docker-compose-mode) (use-package treesit-auto - :hook (after-init . global-treesit-auto-mode) + :hook (elpaca-after-init . global-treesit-auto-mode) :custom (treesit-auto-install 'prompt) :config diff --git a/lisp/init-completion.el b/lisp/init-completion.el index 3329f93..9c6d6a2 100644 --- a/lisp/init-completion.el +++ b/lisp/init-completion.el @@ -55,7 +55,7 @@ ("RET" . vertico-directory-enter) ("DEL" . vertico-directory-delete-char) ("M-DEL" . vertico-directory-delete-word)) - :hook (after-init . vertico-mode) + :hook (elpaca-after-init . vertico-mode) :hook (rfn-eshadow-update-overlay . vertico-directory-tidy)) @@ -64,7 +64,7 @@ ;; :hook (vertico-mode . vertico-posframe-mode)) (use-package vertico-multiform - :straight nil + :ensure nil :hook (vertico-mode . vertico-multiform-mode) :config (defvar +vertico-transform-functions nil) @@ -102,7 +102,7 @@ ;; Enrich existing commands with completion annotations (use-package marginalia - :hook (after-init . marginalia-mode)) + :hook (elpaca-after-init . marginalia-mode)) ;; Add icons to completion candidates @@ -259,7 +259,7 @@ ;; A few more useful configurations... (use-package emacs - :straight nil + :ensure nil :custom ;; TAB cycle if there are only few candidates ;; (completion-cycle-threshold 3) diff --git a/lisp/init-dashboard.el b/lisp/init-dashboard.el index f81a6d3..4698ca7 100644 --- a/lisp/init-dashboard.el +++ b/lisp/init-dashboard.el @@ -3,7 +3,7 @@ (use-package dashboard :init (use-package doom-dashboard - :straight (doom-dashboard :host github + :ensure (doom-dashboard :host github :repo "emacs-dashboard/doom-dashboard") :demand t ;; Movement keys like doom. diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 1007ebd..67cc1ae 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -1,7 +1,7 @@ ;; -*- lexical-binding: t -*- (use-package dired - :straight nil + :ensure nil :bind (:map dired-mode-map ("C-c C-p" . wdired-change-to-wdired-mode) ("b" . dired-up-directory)) @@ -13,30 +13,22 @@ ;; Show directory first (setq dired-listing-switches "-alh --group-directories-first" - dired-use-ls-dired t) - - ;; Colorful dired - (use-package diredfl - :diminish - :hook dired-mode - :hook dirvish-directory-view-mode) + dired-use-ls-dired t)) - ;; Extra Dired functionality - (use-package dired-aux :straight nil)) +;; Colorful dired +(use-package diredfl + :diminish + :hook dired-mode + :hook dirvish-directory-view-mode) + +;; Extra Dired functionality +(use-package dired-aux :ensure nil) (use-package nerd-icons-dired :diminish - :functions (nerd-icons-icon-for-dir my-nerd-icons-icon-for-dir) - :hook dired-mode - :init - (defface nerd-icons-dired-dir-face - '((t (:inherit 'font-lock-doc-face))) - "Face for the directory icon." - :group 'nerd-icons-faces) - (defun my-nerd-icons-icon-for-dir (dir) - (nerd-icons-icon-for-dir dir :face 'nerd-icons-dired-dir-face)) - (setq nerd-icons-dired-dir-icon-function #'my-nerd-icons-icon-for-dir)) + :hook + (dired-mode . nerd-icons-dired-mode)) ;; (use-package dirvish ;; :bind ("C-c o p" . dirvish-side) diff --git a/lisp/init-edit.el b/lisp/init-edit.el index bddd6cc..e5843b8 100644 --- a/lisp/init-edit.el +++ b/lisp/init-edit.el @@ -1,11 +1,12 @@ ;; -*- lexical-binding: t -*- (use-package delsel - :hook (after-init . delete-selection-mode)) + :ensure nil + :hook (elpaca-after-init . delete-selection-mode)) (use-package smartparens :diminish - :hook (after-init . smartparens-global-mode) + :hook (elpaca-after-init . smartparens-global-mode) :init (sp-use-paredit-bindings) :config ;; Autopair quotes more conservatively; if I'm next to a word/before another @@ -35,25 +36,25 @@ ;; ;; Hungry deletion ;; (use-package hungry-delete ;; :diminish -;; :hook (after-init . global-hungry-delete-mode) +;; :hook (elpaca-after-init . global-hungry-delete-mode) ;; :init (setq hungry-delete-chars-to-skip " \t\f\v" ;; hungry-delete-except-modes ;; '(help-mode minibuffer-mode minibuffer-inactive-mode calc-mode))) (use-package abbrev - :straight nil + :ensure nil :diminish :config (setq-default abbrev-mode t) (setq abbrev-file-name (expand-file-name "abbrev.el" user-emacs-directory))) (use-package autorevert - :straight nil + :ensure nil :diminish - :hook (after-init . global-auto-revert-mode)) + :hook (elpaca-after-init . global-auto-revert-mode)) (use-package goto-addr - :straight nil + :ensure nil :hook ((text-mode . goto-address-mode) (prog-mode . goto-address-prog-mode))) @@ -93,7 +94,7 @@ (use-package ace-pinyin :diminish - :hook (after-init . ace-pinyin-global-mode)) + :hook (elpaca-after-init . ace-pinyin-global-mode)) ;; show number of matches (use-package anzu @@ -103,7 +104,7 @@ :map isearch-mode-map ([remap isearch-query-replace] . anzu-isearch-query-replace) ([remap isearch-query-replace-regexp] . anzu-isearch-query-replace-regexp)) - :hook (after-init . global-anzu-mode)) + :hook (elpaca-after-init . global-anzu-mode)) ;; Goto last change (use-package goto-chg @@ -116,11 +117,11 @@ ;; Remember undo history (use-package undo-fu-session - :hook (after-init . undo-fu-session-global-mode)) + :hook (elpaca-after-init . undo-fu-session-global-mode)) ;; Process (use-package proced - :straight nil + :ensure nil :init (setq-default proced-format 'verbose) (setq proced-auto-update-flag t diff --git a/lisp/init-eglot.el b/lisp/init-eglot.el index b383174..d2eccc9 100644 --- a/lisp/init-eglot.el +++ b/lisp/init-eglot.el @@ -20,7 +20,7 @@ eglot-code-action-indications '(eldoc-hint))) (use-package eglot-booster - :straight (eglot-booster :type git :host nil :repo "https://github.com/jdtsmith/eglot-booster") + :ensure (eglot-booster :type git :host nil :repo "https://github.com/jdtsmith/eglot-booster") :after eglot :config (eglot-booster-mode)) @@ -41,7 +41,7 @@ (use-package eldoc :after eglot - :straight nil + :ensure nil :diminish) (use-package eldoc-mouse diff --git a/lisp/init-elpaca.el b/lisp/init-elpaca.el index 5a6cc61..61bd46b 100644 --- a/lisp/init-elpaca.el +++ b/lisp/init-elpaca.el @@ -51,14 +51,14 @@ ;; Install use-package support (elpaca elpaca-use-package - ;; Enable use-package :straight support for Elpaca. + ;; Enable use-package :ensure support for Elpaca. (elpaca-use-package-mode)) ;;When installing a package used in the init file itself, ;;e.g. a package which adds a use-package key word, ;;use the :wait recipe keyword to block until that package is installed/configured. ;;For example: -;;(use-package general :straight (:wait t) :demand t) +;;(use-package general :ensure (:wait t) :demand t) (setq elpaca-lock-file (expand-file-name "lock-file.eld" user-emacs-directory)) @@ -66,7 +66,30 @@ use-package-expand-minimally t use-package-always-defer t) -(use-package diminish) +(use-package elpaca-ui + :ensure nil + :bind (:map elpaca-ui-mode-map + ("p" . previous-line) + ("F" . elpaca-ui-mark-pull)) + :hook (elpaca-log-mode . elpaca-log-update-mode) + :after popper + :init + (add-to-list 'popper-reference-buffers + 'elpaca-log-mode) + (setf (alist-get '(major-mode . elpaca-log-mode) + display-buffer-alist + nil nil #'equal) + '((display-buffer-at-bottom + display-buffer-in-side-window) + (side . below) + (slot . 49) + (window-height . 0.4) + (body-function . select-window)) + (alist-get "\\*elpaca-diff\\*" display-buffer-alist + nil nil #'equal) + '((display-buffer-reuse-window + display-buffer-in-atom-window) + (side . right)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/lisp/init-hydra.el b/lisp/init-hydra.el index 683b7b9..550b00a 100644 --- a/lisp/init-hydra.el +++ b/lisp/init-hydra.el @@ -4,7 +4,7 @@ :hook ((emacs-lisp-mode . hydra-add-imenu))) (use-package pretty-hydra - :straight (:wait t) + :ensure (:wait t) :hook (emacs-lisp-mode . (lambda () (add-to-list 'imenu-generic-expression diff --git a/lisp/init-lsp.el b/lisp/init-lsp.el index c4a59f2..bd2484e 100644 --- a/lisp/init-lsp.el +++ b/lisp/init-lsp.el @@ -19,7 +19,7 @@ (lsp-mode . (lambda () ;; Integrate `which-key' (lsp-enable-which-key-integration) - (add-hook 'before-save-hook #'lsp-format-buffer t t) + ;; (add-hook 'before-save-hook #'lsp-format-buffer t t) (add-hook 'before-save-hook #'lsp-organize-imports t t)))) :bind (:map lsp-mode-map ("C-c c d" . lsp-describe-thing-at-point) @@ -58,12 +58,7 @@ ;; For diagnostics lsp-diagnostics-disabled-modes '(markdown-mode gfm-mode)) - :config - (use-package consult-lsp - :bind (:map lsp-mode-map - ("C-M-." . consult-lsp-symbols))) - (with-no-warnings ;; Disable `lsp-mode' in `git-timemachine-mode' (defun my/lsp--init-if-visible (fn &rest args) @@ -77,79 +72,6 @@ (memq sh-shell '(sh bash zsh)))) (advice-add #'lsp-bash-check-sh-shell :override #'my/lsp-bash-check-sh-shell) (add-to-list 'lsp-language-id-configuration '(bash-ts-mode . "shellscript")) - - (use-package lsp-ui - :custom-face - (lsp-ui-sideline-code-action ((t (:inherit warning)))) - :pretty-hydra - ((:color amaranth :quit-key ("q" "C-g")) - ("Doc" - (("d e" (progn - (lsp-ui-doc-enable (not lsp-ui-doc-mode)) - (setq lsp-ui-doc-enable (not lsp-ui-doc-enable))) - "enable" :toggle lsp-ui-doc-mode) - ("d s" (setq lsp-ui-doc-include-signature (not lsp-ui-doc-include-signature)) - "signature" :toggle lsp-ui-doc-include-signature) - ("d t" (setq lsp-ui-doc-position 'top) - "top" :toggle (eq lsp-ui-doc-position 'top)) - ("d b" (setq lsp-ui-doc-position 'bottom) - "bottom" :toggle (eq lsp-ui-doc-position 'bottom)) - ("d p" (setq lsp-ui-doc-position 'at-point) - "at point" :toggle (eq lsp-ui-doc-position 'at-point)) - ("d h" (setq lsp-ui-doc-header (not lsp-ui-doc-header)) - "header" :toggle lsp-ui-doc-header) - ("d f" (setq lsp-ui-doc-alignment 'frame) - "align frame" :toggle (eq lsp-ui-doc-alignment 'frame)) - ("d w" (setq lsp-ui-doc-alignment 'window) - "align window" :toggle (eq lsp-ui-doc-alignment 'window))) - "Sideline" - (("s e" (progn - (lsp-ui-sideline-enable (not lsp-ui-sideline-mode)) - (setq lsp-ui-sideline-enable (not lsp-ui-sideline-enable))) - "enable" :toggle lsp-ui-sideline-mode) - ("s h" (setq lsp-ui-sideline-show-hover (not lsp-ui-sideline-show-hover)) - "hover" :toggle lsp-ui-sideline-show-hover) - ("s d" (setq lsp-ui-sideline-show-diagnostics (not lsp-ui-sideline-show-diagnostics)) - "diagnostics" :toggle lsp-ui-sideline-show-diagnostics) - ("s s" (setq lsp-ui-sideline-show-symbol (not lsp-ui-sideline-show-symbol)) - "symbol" :toggle lsp-ui-sideline-show-symbol) - ("s c" (setq lsp-ui-sideline-show-code-actions (not lsp-ui-sideline-show-code-actions)) - "code actions" :toggle lsp-ui-sideline-show-code-actions) - ("s i" (setq lsp-ui-sideline-ignore-duplicate (not lsp-ui-sideline-ignore-duplicate)) - "ignore duplicate" :toggle lsp-ui-sideline-ignore-duplicate)) - "Action" - (("h" backward-char "←") - ("j" next-line "↓") - ("k" previous-line "↑") - ("l" forward-char "→") - ("C-a" mwim-beginning-of-code-or-line nil) - ("C-e" mwim-end-of-code-or-line nil) - ("C-b" backward-char nil) - ("C-n" next-line nil) - ("C-p" previous-line nil) - ("C-f" forward-char nil) - ("M-b" backward-word nil) - ("M-f" forward-word nil) - ("c" lsp-ui-sideline-apply-code-actions "apply code actions")))) - :bind (("C-c u" . lsp-ui-imenu) - :map lsp-ui-mode-map - ("M-" . lsp-ui-hydra/body) - ("s-" . lsp-ui-sideline-apply-code-actions) - ([remap xref-find-definitions] . lsp-ui-peek-find-definitions) - ([remap xref-find-references] . lsp-ui-peek-find-references)) - :hook ((lsp-mode . lsp-ui-mode) - (after-load-theme . lsp-ui-set-doc-border)) - :init - (setq lsp-ui-sideline-show-diagnostics nil - lsp-ui-sideline-ignore-duplicate t - lsp-ui-doc-delay 0.1 - lsp-ui-doc-show-with-cursor (not (display-graphic-p)) - lsp-ui-imenu-auto-refresh 'after-save - lsp-ui-imenu-colors `(,(face-foreground 'font-lock-keyword-face) - ,(face-foreground 'font-lock-string-face) - ,(face-foreground 'font-lock-constant-face) - ,(face-foreground 'font-lock-variable-name-face)))) - :preface (defun lsp-booster--advice-json-parse (old-fn &rest args) "Try to parse bytecode instead of json." @@ -181,7 +103,82 @@ (append (list "emacs-lsp-booster" "--") orig-result)) orig-result))) (advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command) + ) +(use-package consult-lsp + :bind (:map lsp-mode-map + ("C-M-." . consult-lsp-symbols))) +(use-package lsp-ui + :custom-face + (lsp-ui-sideline-code-action ((t (:inherit warning)))) + :pretty-hydra + ((:color amaranth :quit-key ("q" "C-g")) + ("Doc" + (("d e" (progn + (lsp-ui-doc-enable (not lsp-ui-doc-mode)) + (setq lsp-ui-doc-enable (not lsp-ui-doc-enable))) + "enable" :toggle lsp-ui-doc-mode) + ("d s" (setq lsp-ui-doc-include-signature (not lsp-ui-doc-include-signature)) + "signature" :toggle lsp-ui-doc-include-signature) + ("d t" (setq lsp-ui-doc-position 'top) + "top" :toggle (eq lsp-ui-doc-position 'top)) + ("d b" (setq lsp-ui-doc-position 'bottom) + "bottom" :toggle (eq lsp-ui-doc-position 'bottom)) + ("d p" (setq lsp-ui-doc-position 'at-point) + "at point" :toggle (eq lsp-ui-doc-position 'at-point)) + ("d h" (setq lsp-ui-doc-header (not lsp-ui-doc-header)) + "header" :toggle lsp-ui-doc-header) + ("d f" (setq lsp-ui-doc-alignment 'frame) + "align frame" :toggle (eq lsp-ui-doc-alignment 'frame)) + ("d w" (setq lsp-ui-doc-alignment 'window) + "align window" :toggle (eq lsp-ui-doc-alignment 'window))) + "Sideline" + (("s e" (progn + (lsp-ui-sideline-enable (not lsp-ui-sideline-mode)) + (setq lsp-ui-sideline-enable (not lsp-ui-sideline-enable))) + "enable" :toggle lsp-ui-sideline-mode) + ("s h" (setq lsp-ui-sideline-show-hover (not lsp-ui-sideline-show-hover)) + "hover" :toggle lsp-ui-sideline-show-hover) + ("s d" (setq lsp-ui-sideline-show-diagnostics (not lsp-ui-sideline-show-diagnostics)) + "diagnostics" :toggle lsp-ui-sideline-show-diagnostics) + ("s s" (setq lsp-ui-sideline-show-symbol (not lsp-ui-sideline-show-symbol)) + "symbol" :toggle lsp-ui-sideline-show-symbol) + ("s c" (setq lsp-ui-sideline-show-code-actions (not lsp-ui-sideline-show-code-actions)) + "code actions" :toggle lsp-ui-sideline-show-code-actions) + ("s i" (setq lsp-ui-sideline-ignore-duplicate (not lsp-ui-sideline-ignore-duplicate)) + "ignore duplicate" :toggle lsp-ui-sideline-ignore-duplicate)) + "Action" + (("h" backward-char "←") + ("j" next-line "↓") + ("k" previous-line "↑") + ("l" forward-char "→") + ("C-a" mwim-beginning-of-code-or-line nil) + ("C-e" mwim-end-of-code-or-line nil) + ("C-b" backward-char nil) + ("C-n" next-line nil) + ("C-p" previous-line nil) + ("C-f" forward-char nil) + ("M-b" backward-word nil) + ("M-f" forward-word nil) + ("c" lsp-ui-sideline-apply-code-actions "apply code actions")))) + :bind (("C-c u" . lsp-ui-imenu) + :map lsp-ui-mode-map + ("M-" . lsp-ui-hydra/body) + ("s-" . lsp-ui-sideline-apply-code-actions) + ([remap xref-find-definitions] . lsp-ui-peek-find-definitions) + ([remap xref-find-references] . lsp-ui-peek-find-references)) + :hook ((lsp-mode . lsp-ui-mode) + (after-load-theme . lsp-ui-set-doc-border)) + :init + (setq lsp-ui-sideline-show-diagnostics nil + lsp-ui-sideline-ignore-duplicate t + lsp-ui-doc-delay 0.1 + lsp-ui-doc-show-with-cursor (not (display-graphic-p)) + lsp-ui-imenu-auto-refresh 'after-save + lsp-ui-imenu-colors `(,(face-foreground 'font-lock-keyword-face) + ,(face-foreground 'font-lock-string-face) + ,(face-foreground 'font-lock-constant-face) + ,(face-foreground 'font-lock-variable-name-face)))) (provide 'init-lsp) diff --git a/lisp/init-meow.el b/lisp/init-meow.el index 5b1822e..7ca3e6c 100644 --- a/lisp/init-meow.el +++ b/lisp/init-meow.el @@ -85,7 +85,7 @@ (use-package meow :demand t - :hook (after-init . meow-global-mode) + :hook (elpaca-after-init . meow-global-mode) :config (meow-setup) (setq meow-replace-state-name-list diff --git a/lisp/init-ocaml.el b/lisp/init-ocaml.el index 3b32797..01d2d79 100644 --- a/lisp/init-ocaml.el +++ b/lisp/init-ocaml.el @@ -2,7 +2,7 @@ (use-package tuareg - :straight t + :ensure t :mode (("\\.ocamlinit\\'" . tuareg-mode)) :config (setq tuareg-prettify-symbols-full t)) @@ -20,7 +20,7 @@ (use-package utop) ;; (use-package ocaml-eglot -;; :straight t +;; :ensure t ;; :after tuareg ;; :hook (tuareg-mode . ocaml-eglot) ;; :hook (ocaml-eglot . eglot-ensure) diff --git a/lisp/init-org.el b/lisp/init-org.el index 6366092..b31cce3 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -6,30 +6,32 @@ ;; "* TODO %?\n%i\n%a" :prepend t)))) (use-package org - :straight (org :fork (:host nil - :repo "https://code.tecosaur.net/tec/org-mode.git" - :branch "dev" - :remote "tecosaur") - :branch "dev" - :files (:defaults "etc") - :build t - :pre-build - (with-temp-file "org-version.el" - (require 'lisp-mnt) - (let ((version - (with-temp-buffer - (insert-file-contents "lisp/org.el") - (lm-header "version"))) - (git-version - (string-trim - (with-temp-buffer - (call-process "git" nil t nil "rev-parse" "--short" "HEAD") - (buffer-string))))) - (insert - (format "(defun org-release () \"The release version of Org.\" %S)\n" version) - (format "(defun org-git-version () \"The truncate git commit hash of Org mode.\" %S)\n" git-version) - "(provide 'org-version)\n"))) - :pin nil) + :ensure (org (:repo "https://code.tecosaur.net/tec/org-mode.git" + :branch "dev")) + ;; :ensure (org :fork (:host nil + ;; :repo "https://code.tecosaur.net/tec/org-mode.git" + ;; :branch "dev") + ;; :remote "tecosaur") + ;; :branch "dev" + ;; :files (:defaults "etc") + ;; :build t + ;; :pre-build + ;; (with-temp-file "org-version.el" + ;; (require 'lisp-mnt) + ;; (let ((version + ;; (with-temp-buffer + ;; (insert-file-contents "lisp/org.el") + ;; (lm-header "version"))) + ;; (git-version + ;; (string-trim + ;; (with-temp-buffer + ;; (call-process "git" nil t nil "rev-parse" "--short" "HEAD") + ;; (buffer-string))))) + ;; (insert + ;; (format "(defun org-release () \"The release version of Org.\" %S)\n" version) + ;; (format "(defun org-git-version () \"The truncate git commit hash of Org mode.\" %S)\n" git-version) + ;; "(provide 'org-version)\n"))) + ;; :pin nil) :hook (org-mode . org-cdlatex-mode) :hook (org-mode . org-indent-mode) :hook (org-mode . visual-line-mode) @@ -175,7 +177,7 @@ the element after the #+HEADER: tag." )) (use-package org-modern-indent - :straight (org-modern-indent :type git :host github :repo "jdtsmith/org-modern-indent") + :ensure (org-modern-indent :type git :host github :repo "jdtsmith/org-modern-indent") :config ; add late to hook (add-hook 'org-mode-hook #'org-modern-indent-mode 90)) @@ -188,7 +190,7 @@ the element after the #+HEADER: tag." (run-at-time nil nil #'org-appear--set-elements)) (use-package hl-todo - :hook (after-init . global-hl-todo-mode) + :hook (elpaca-after-init . global-hl-todo-mode) :config (setq hl-todo-highlight-punctuation ":" hl-todo-keyword-faces @@ -214,7 +216,7 @@ the element after the #+HEADER: tag." ("XXX" font-lock-constant-face bold)))) (use-package org-latex-preview - :straight nil + :ensure nil :hook (org-mode . org-latex-preview-mode) :hook (org-latex-preview-mode . org-latex-preview-center-mode) :config @@ -323,10 +325,8 @@ the element after the #+HEADER: tag." (use-package valign :hook (org-mode . valign-mode)) -(use-package org-noter - :config - (use-package djvu)) - +(use-package djvu) +(use-package org-noter) ;; Enable lsp in org-babel (cl-defmacro lsp-org-babel-enable (lang) diff --git a/lisp/init-python.el b/lisp/init-python.el index 3514c26..5a619a0 100644 --- a/lisp/init-python.el +++ b/lisp/init-python.el @@ -3,7 +3,7 @@ ;; Python Mode ;; Install: pip install pyflakes autopep8 (use-package python - :straight nil + :ensure nil :functions exec-path-from-shell-copy-env :hook (inferior-python-mode . (lambda () (process-query-on-exit-flag diff --git a/lisp/init-shell.el b/lisp/init-shell.el index 0efcb77..9ea00aa 100644 --- a/lisp/init-shell.el +++ b/lisp/init-shell.el @@ -1,7 +1,7 @@ ;; -*- lexical-binding: t; -*- (use-package shell - :straight nil + :ensure nil :hook ((shell-mode . my/shell-mode-hook) (comint-output-filter-functions . comint-strip-ctrl-m)) :init @@ -149,7 +149,7 @@ :bind ("C-`" . eshell-toggle) :hook ((eshell-load . eat-eshell-mode) (eshell-load . eat-eshell-visual-command-mode)) - :straight `(eat :repo "https://codeberg.org/akib/emacs-eat" + :ensure `(eat :repo "https://codeberg.org/akib/emacs-eat" :files ("*.el" ("term" "term/*.el") "*.texi" "*.ti" ("terminfo/e" "terminfo/e/*") ("terminfo/65" "terminfo/65/*") @@ -195,7 +195,7 @@ (use-package eshell-syntax-highlighting :after eshell-mode - :hook (after-init . eshell-syntax-highlighting-global-mode)) + :hook (elpaca-after-init . eshell-syntax-highlighting-global-mode)) (provide 'init-shell) diff --git a/lisp/init-snippet.el b/lisp/init-snippet.el index aa7598c..2c8ad9f 100644 --- a/lisp/init-snippet.el +++ b/lisp/init-snippet.el @@ -3,13 +3,12 @@ ;; Yasnippet settings (use-package yasnippet :diminish - :hook (after-init . yas-global-mode) - :hook ((LaTeX-mode . yas-minor-mode) - (post-self-insert . my/yas-try-expanding-auto-snippets)) + :hook (elpaca-after-init . yas-global-mode) + :hook ((post-self-insert . my/yas-try-expanding-auto-snippets)) :config (elemacs-load-packages-incrementally '(eldoc easymenu help-mode)) (use-package warnings - :straight nil + :ensure nil :config (cl-pushnew '(yasnippet backquote-change) warning-suppress-types @@ -28,7 +27,7 @@ (yas-expand))))) ;; Collection of yasnippet snippets -;; (use-package yasnippet-snippets) +(use-package yasnippet-snippets) diff --git a/lisp/init-tex.el b/lisp/init-tex.el index 227a071..279fd14 100644 --- a/lisp/init-tex.el +++ b/lisp/init-tex.el @@ -1,10 +1,23 @@ ;; -*- lexical-binding: t; -*- (use-package latex - ;; :straight (auctex :pre-build (("./autogen.sh") - ;; ("./configure" "--without-texmf-dir" "--with-lispdir=.") - ;; ("make"))) - :straight (auctex :type git :host nil :repo "https://git.savannah.gnu.org/git/auctex.git") + :after tex + :ensure (auctex :pre-build (("./autogen.sh") + ("./configure" "--without-texmf-dir" "--with-lispdir=.") + ("make"))) + ;; :ensure (auctex :type git :host nil :repo "https://git.savannah.gnu.org/git/auctex.git") + :defines (TeX-auto-save + TeX-parse-self + TeX-electric-escape + TeX-PDF-mode + TeX-DVI-via-PDFTeX + TeX-clean-confirm + TeX-source-correlate-mode + TeX-source-correlate-method + TeX-display-help + TeX-show-compilation + TeX-command-extra-options + TeX-view-program-selection) :mode (("\\.tex\\'" . LaTeX-mode)) :hook ((LaTeX-mode . prettify-symbols-mode) (LaTeX-mode . visual-line-mode) diff --git a/lisp/init-treemacs.el b/lisp/init-treemacs.el index 44b5c61..4e8a3ee 100644 --- a/lisp/init-treemacs.el +++ b/lisp/init-treemacs.el @@ -17,7 +17,7 @@ treemacs-missing-project-action 'remove treemacs-user-mode-line-format 'none treemacs-sorting 'alphabetic-asc - treemacs-follow-after-init t + treemacs-follow-elpaca-after-init t treemacs-width 30 treemacs-show-hidden-files nil treemacs-silent-refresh t @@ -41,7 +41,7 @@ (use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode :after (treemacs) - :straight t + :ensure t :config (treemacs-set-scope-type 'Tabs)) (use-package treemacs-nerd-icons diff --git a/lisp/init-typst.el b/lisp/init-typst.el index fcab324..e724aef 100644 --- a/lisp/init-typst.el +++ b/lisp/init-typst.el @@ -2,7 +2,7 @@ (use-package typst-ts-mode - :straight (:type git :host codeberg :repo "meow_king/typst-ts-mode") + :ensure (:type git :host codeberg :repo "meow_king/typst-ts-mode") :custom ;; (typst-ts-watch-options "--open") (typst-ts-mode-grammar-location (expand-file-name "tree-sitter/libtree-sitter-typst.so" user-emacs-directory)) @@ -19,7 +19,7 @@ (setq typst-ts-preview-function 'find-file-other-window)) (use-package typst-preview - :straight (:type git :host github :repo "havarddj/typst-preview.el") + :ensure (:type git :host github :repo "havarddj/typst-preview.el") :init (setq typst-preview-autostart t) ; start preview automatically when typst-preview-mode is activated (setq typst-preview-open-browser-automatically t) ; open browser automatically when typst-preview-start is run diff --git a/lisp/init-ui.el b/lisp/init-ui.el index 35c5e67..1aaf780 100644 --- a/lisp/init-ui.el +++ b/lisp/init-ui.el @@ -19,7 +19,7 @@ (add-to-list 'default-frame-alist '(undecorated-round . t)) (use-package solaire-mode - :hook (after-init . solaire-global-mode)) + :hook (elpaca-after-init . solaire-global-mode)) (use-package modus-themes :init @@ -65,7 +65,7 @@ ;; something to execute when light mode is detected (doric-themes-load-random 'light) )) - :hook after-init) + :hook elpaca-after-init) (use-package rainbow-delimiters :hook ((prog-mode . rainbow-delimiters-mode) @@ -80,7 +80,7 @@ :hook emacs-startup) ;; (use-package doom-modeline -;; :hook (after-init . doom-modeline-mode) +;; :hook (elpaca-after-init . doom-modeline-mode) ;; :config ;; (setq doom-modeline-support-imenu t ;; doom-modeline-height 30 @@ -129,13 +129,13 @@ (use-package diff-hl :diminish - :hook (after-init global-diff-hl-mode) - :hook (after-init diff-hl-dired-mode) - :hook (after-init diff-hl-flydiff-mode)) + :hook (elpaca-after-init global-diff-hl-mode) + :hook (elpaca-after-init diff-hl-dired-mode) + :hook (elpaca-after-init diff-hl-flydiff-mode)) ;; Easily adjust the font size in all frames (use-package default-text-scale - :hook (after-init . default-text-scale-mode) + :hook (elpaca-after-init . default-text-scale-mode) :bind (:map default-text-scale-mode-map ("C-s-=" . default-text-scale-increase) ("C-s--" . default-text-scale-decrease) @@ -153,7 +153,7 @@ mouse-wheel-progressive-speed nil) (use-package nerd-icons - :straight (nerd-icons + :ensure (nerd-icons :type git :host github :repo "rainstormstudio/nerd-icons.el") @@ -170,7 +170,7 @@ ;; :commands transient-posframe-mode ;; :custom-face ;; (transient-posframe-border ((t (:inherit posframe-border :background unspecified)))) -;; :hook after-init +;; :hook elpaca-after-init ;; :init (setq transient-mode-line-format nil ;; transient-posframe-parameters '((left-fringe . 8) ;; (right-fringe . 8)))) @@ -184,15 +184,15 @@ (use-package beacon :diminish - :hook after-init) + :hook elpaca-after-init) (use-package spacious-padding :diminish - :hook after-init) + :hook elpaca-after-init) ;; Eval result overlay (use-package eros - :hook after-init + :hook elpaca-after-init :bind (([remap eval-defun] . eros-eval-defun) ([remap eval-last-sexp] . eros-eval-last-sexp))) diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 4cdd9a7..89998e0 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -1,10 +1,12 @@ ;; -*- lexical-binding: t; -*- +(use-package transient) + (use-package which-key :diminish :functions childframe-completion-workable-p :bind ("C-h M-m" . which-key-show-major-mode) - :hook (after-init . which-key-mode) + :hook (elpaca-after-init . which-key-mode) :init (setq which-key-max-description-length 30 which-key-idle-delay 0.5 which-key-lighter nil @@ -29,7 +31,7 @@ (which-key-add-key-based-replacements "C-x v" "version control")) (use-package grep - :straight nil + :ensure nil :autoload grep-apply-setting :init (when (executable-find "rg") @@ -49,7 +51,7 @@ ;; Fast search tool `ripgrep' (use-package rg - ;; :hook (after-init . rg-enable-default-bindings) + ;; :hook (elpaca-after-init . rg-enable-default-bindings) :bind (:map rg-global-map ("c" . rg-dwim-current-dir) ("f" . rg-dwim-current-file) @@ -69,7 +71,7 @@ ;; :demand t) ;; (use-package keycast -;; :hook (after-init . keycast-mode-line-mode) +;; :hook (elpaca-after-init . keycast-mode-line-mode) ;; :config ;; (setq keycast-mode-line-remove-tail-elements nil)) diff --git a/lisp/init-vcs.el b/lisp/init-vcs.el index 912eac3..ae873bc 100644 --- a/lisp/init-vcs.el +++ b/lisp/init-vcs.el @@ -1,7 +1,5 @@ ;; -*- lexical-binding: t; -*- -(use-package transient) - (use-package magit :defer t :bind (("C-c g" . magit-dispatch)) @@ -49,7 +47,7 @@ (user-error "Cannot revert the timemachine buffer")))))) (use-package smerge-mode - :straight nil + :ensure nil :diminish :pretty-hydra ((:title (pretty-hydra-title "Smerge" 'octicon "nf-oct-diff") diff --git a/lisp/init-window.el b/lisp/init-window.el index 40eff76..c395d5f 100644 --- a/lisp/init-window.el +++ b/lisp/init-window.el @@ -2,9 +2,9 @@ ;; Restore old window configurations (use-package winner - :straight nil + :ensure nil :commands (winner-undo winner-redo) - :hook after-init + :hook elpaca-after-init :init (setq winner-boring-buffers '("*Completions*" "*Compile-Log*" "*inferior-lisp*" diff --git a/lisp/init-workspace.el b/lisp/init-workspace.el index d770e88..f18fe35 100644 --- a/lisp/init-workspace.el +++ b/lisp/init-workspace.el @@ -3,7 +3,7 @@ ;; (use-package project) (use-package projectile - :hook after-init + :hook elpaca-after-init :config ;; Recommended keymap prefix on macOS (define-key projectile-mode-map (kbd "s-p") 'projectile-command-map) @@ -15,7 +15,7 @@ :bind ("C-x C-b" . ibuffer) :init (setq ibuffer-filter-group-name-face '(:inherit (font-lock-string-face bold)))) (use-package nerd-icons-ibuffer - :straight t + :ensure t :hook (ibuffer-mode-hook . nerd-icons-ibuffer-mode)) (use-package ibuffer-projectile :init @@ -26,7 +26,7 @@ (ibuffer-do-sort-by-alphabetic))))) (use-package beframe - :hook after-init + :hook elpaca-after-init :bind ("C-x f" . other-frame-prefix) :config (define-key global-map (kbd "C-c b") #'beframe-prefix-map)