Moving back to elpaca, again

This commit is contained in:
Zelong Kuang
2026-04-02 19:21:30 +11:00
parent abaeeb6486
commit f2ec25c9d9
27 changed files with 247 additions and 258 deletions

View File

@@ -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))

View File

@@ -17,8 +17,8 @@
(delete-dups (append file-name-handler-alist default-handlers)))) (delete-dups (append file-name-handler-alist default-handlers))))
101))) 101)))
;; (require 'init-elpaca) (require 'init-elpaca)
(require 'init-straight) ;; (require 'init-straight)
(require 'init-gc) (require 'init-gc)
(require 'init-better-default) (require 'init-better-default)
(require 'init-hydra) (require 'init-hydra)

View File

@@ -1,17 +1,7 @@
;; -*- lexical-binding: t -*- ;; -*- lexical-binding: t -*-
(use-package benchmark-init :demand t (use-package benchmark-init :demand t
:hook (after-init . benchmark-init/deactivate)) :hook (elpaca-elpaca-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)
)
;; Load some component of large package (org, magit etc.) before complete mount ;; Load some component of large package (org, magit etc.) before complete mount
(defvar elemacs-incremental-packages '(t) (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))) (exec-path-from-shell-initialize)))
(setq custom-file (expand-file-name "~/.emacs.d/custom.el")) (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 ;; Start server
(use-package server (use-package server
:ensure nil
:hook (emacs-startup . (lambda () :hook (emacs-startup . (lambda ()
(unless server-mode (unless server-mode
(server-mode 1))))) (server-mode 1)))))
;; Save place ;; Save place
(use-package saveplace (use-package saveplace
:hook (after-init . save-place-mode)) :ensure nil
:hook (elpaca-elpaca-after-init . save-place-mode))
(use-package display-line-numbers (use-package display-line-numbers
:straight nil :ensure nil
:hook (text-mode . display-line-numbers-mode) :hook (text-mode . display-line-numbers-mode)
:hook (prog-mode . display-line-numbers-mode) :hook (prog-mode . display-line-numbers-mode)
:config :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)))) (add-hook mode (lambda () (display-line-numbers-mode -1))))
(setq display-line-numbers-type 'relative) (setq display-line-numbers-type 'relative)
) )
(use-package del-trailing-white (use-package del-trailing-white
:straight nil :ensure nil
:hook ((prog-mode markdown-mode conf-mode) . enable-trailing-whitespace) :hook ((prog-mode markdown-mode conf-mode) . enable-trailing-whitespace)
:init :init
(setq-default show-trailing-whitespace nil) (setq-default show-trailing-whitespace nil)
@@ -137,21 +130,21 @@ If this is a daemon session, load them all immediately instead."
) )
(use-package subword (use-package subword
:straight nil :ensure nil
:diminish :diminish
:hook (prog-mode minibuffer-setup)) :hook (prog-mode minibuffer-setup))
(use-package paren (use-package paren
:straight nil :ensure nil
:hook (after-init . show-paren-mode)) :hook (elpaca-elpaca-after-init . show-paren-mode))
;; ;; Show trailing whitespace only in prog-mode and text-mode ;; ;; Show trailing whitespace only in prog-mode and text-mode
;; (add-hook 'prog-mode-hook (lambda () (setq show-trailing-whitespace t))) ;; (add-hook 'prog-mode-hook (lambda () (setq show-trailing-whitespace t)))
;; (add-hook 'text-mode-hook (lambda () (setq show-trailing-whitespace t))) ;; (add-hook 'text-mode-hook (lambda () (setq show-trailing-whitespace t)))
(use-package recentf (use-package recentf
:straight nil :ensure nil
:hook (after-init . recentf-mode) :hook (elpaca-after-init . recentf-mode)
:init :init
(setq recentf-max-saved-items 500 (setq recentf-max-saved-items 500
recentf-exclude 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)) (add-to-list 'recentf-filename-handlers #'abbreviate-file-name))
(use-package savehist (use-package savehist
:straight nil :ensure nil
:hook (after-init . savehist-mode) :hook (elpaca-elpaca-after-init . savehist-mode)
:init (setq enable-recursive-minibuffers t ; Allow commands in minibuffers :init (setq enable-recursive-minibuffers t ; Allow commands in minibuffers
history-length 1000 history-length 1000
savehist-additional-variables '(mark-ring 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 (use-package browse-kill-ring
:bind ("C-c k" . 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 "────────────────" :init (setq browse-kill-ring-separator "────────────────"
browse-kill-ring-separator-face 'shadow)) browse-kill-ring-separator-face 'shadow))
@@ -234,7 +227,7 @@ If this is a daemon session, load them all immediately instead."
:init :init
(setq scroll-conservatively 3 (setq scroll-conservatively 3
scroll-margin 0) scroll-margin 0)
:hook (after-init . ultra-scroll-mode)) :hook (elpaca-elpaca-after-init . ultra-scroll-mode))
(use-package helpful (use-package helpful
:bind (([remap describe-function] . helpful-callable) :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") (setq tramp-default-method "rpc")
(use-package tramp (use-package tramp)
:straight (:type built-in))
(use-package tramp-hlo (use-package tramp-hlo
:config :config
(tramp-hlo-setup)) (tramp-hlo-setup))
(use-package tramp-rpc (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 :config
(tramp-rpc-magit-enable) (tramp-rpc-magit-enable)
(tramp-rpc-projectile-enable)) (tramp-rpc-projectile-enable))

View File

@@ -1,13 +1,13 @@
;; -*- lexical-binding: t; -*- ;; -*- lexical-binding: t; -*-
(use-package cc-mode (use-package cc-mode
:straight nil :ensure nil
:init (setq-default c-basic-offset 2)) :init (setq-default c-basic-offset 2))
(when (treesit-available-p) (when (treesit-available-p)
(use-package c-ts-mode (use-package c-ts-mode
:straight nil :ensure nil
:functions treesit-available-p :functions treesit-available-p
:init :init
(setq c-ts-mode-indent-offset 2) (setq c-ts-mode-indent-offset 2)

View File

@@ -10,43 +10,16 @@
(setq xref-show-definitions-function #'xref-show-definitions-completing-read (setq xref-show-definitions-function #'xref-show-definitions-completing-read
xref-show-xrefs-function #'xref-show-definitions-completing-read)) xref-show-xrefs-function #'xref-show-definitions-completing-read))
(use-package apheleia (use-package apheleia :diminish)
:diminish
:hook (after-init . apheleia-global-mode))
(use-package editorconfig (use-package editorconfig
:diminish :diminish
:hook after-init) :hook elpaca-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")))))
(use-package docker-compose-mode) (use-package docker-compose-mode)
(use-package treesit-auto (use-package treesit-auto
:hook (after-init . global-treesit-auto-mode) :hook (elpaca-after-init . global-treesit-auto-mode)
:custom :custom
(treesit-auto-install 'prompt) (treesit-auto-install 'prompt)
:config :config

View File

@@ -55,7 +55,7 @@
("RET" . vertico-directory-enter) ("RET" . vertico-directory-enter)
("DEL" . vertico-directory-delete-char) ("DEL" . vertico-directory-delete-char)
("M-DEL" . vertico-directory-delete-word)) ("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)) :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))
@@ -64,7 +64,7 @@
;; :hook (vertico-mode . vertico-posframe-mode)) ;; :hook (vertico-mode . vertico-posframe-mode))
(use-package vertico-multiform (use-package vertico-multiform
:straight nil :ensure nil
:hook (vertico-mode . vertico-multiform-mode) :hook (vertico-mode . vertico-multiform-mode)
:config :config
(defvar +vertico-transform-functions nil) (defvar +vertico-transform-functions nil)
@@ -102,7 +102,7 @@
;; Enrich existing commands with completion annotations ;; Enrich existing commands with completion annotations
(use-package marginalia (use-package marginalia
:hook (after-init . marginalia-mode)) :hook (elpaca-after-init . marginalia-mode))
;; Add icons to completion candidates ;; Add icons to completion candidates
@@ -259,7 +259,7 @@
;; A few more useful configurations... ;; A few more useful configurations...
(use-package emacs (use-package emacs
:straight nil :ensure nil
:custom :custom
;; TAB cycle if there are only few candidates ;; TAB cycle if there are only few candidates
;; (completion-cycle-threshold 3) ;; (completion-cycle-threshold 3)

View File

@@ -3,7 +3,7 @@
(use-package dashboard (use-package dashboard
:init :init
(use-package doom-dashboard (use-package doom-dashboard
:straight (doom-dashboard :host github :ensure (doom-dashboard :host github
:repo "emacs-dashboard/doom-dashboard") :repo "emacs-dashboard/doom-dashboard")
:demand t :demand t
;; Movement keys like doom. ;; Movement keys like doom.

View File

@@ -1,7 +1,7 @@
;; -*- lexical-binding: t -*- ;; -*- lexical-binding: t -*-
(use-package dired (use-package dired
:straight nil :ensure nil
:bind (:map dired-mode-map :bind (:map dired-mode-map
("C-c C-p" . wdired-change-to-wdired-mode) ("C-c C-p" . wdired-change-to-wdired-mode)
("b" . dired-up-directory)) ("b" . dired-up-directory))
@@ -13,30 +13,22 @@
;; Show directory first ;; Show directory first
(setq dired-listing-switches "-alh --group-directories-first" (setq dired-listing-switches "-alh --group-directories-first"
dired-use-ls-dired t) dired-use-ls-dired t))
;; Colorful dired
(use-package diredfl ;; Colorful dired
(use-package diredfl
:diminish :diminish
:hook dired-mode :hook dired-mode
:hook dirvish-directory-view-mode) :hook dirvish-directory-view-mode)
;; Extra Dired functionality
;; Extra Dired functionality (use-package dired-aux :ensure nil)
(use-package dired-aux :straight nil))
(use-package nerd-icons-dired (use-package nerd-icons-dired
:diminish :diminish
:functions (nerd-icons-icon-for-dir my-nerd-icons-icon-for-dir) :hook
:hook dired-mode (dired-mode . nerd-icons-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))
;; (use-package dirvish ;; (use-package dirvish
;; :bind ("C-c o p" . dirvish-side) ;; :bind ("C-c o p" . dirvish-side)

View File

@@ -1,11 +1,12 @@
;; -*- lexical-binding: t -*- ;; -*- lexical-binding: t -*-
(use-package delsel (use-package delsel
:hook (after-init . delete-selection-mode)) :ensure nil
:hook (elpaca-after-init . delete-selection-mode))
(use-package smartparens (use-package smartparens
:diminish :diminish
:hook (after-init . smartparens-global-mode) :hook (elpaca-after-init . smartparens-global-mode)
:init (sp-use-paredit-bindings) :init (sp-use-paredit-bindings)
:config :config
;; Autopair quotes more conservatively; if I'm next to a word/before another ;; Autopair quotes more conservatively; if I'm next to a word/before another
@@ -35,25 +36,25 @@
;; ;; Hungry deletion ;; ;; Hungry deletion
;; (use-package hungry-delete ;; (use-package hungry-delete
;; :diminish ;; :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" ;; :init (setq hungry-delete-chars-to-skip " \t\f\v"
;; hungry-delete-except-modes ;; hungry-delete-except-modes
;; '(help-mode minibuffer-mode minibuffer-inactive-mode calc-mode))) ;; '(help-mode minibuffer-mode minibuffer-inactive-mode calc-mode)))
(use-package abbrev (use-package abbrev
:straight nil :ensure nil
:diminish :diminish
:config :config
(setq-default abbrev-mode t) (setq-default abbrev-mode t)
(setq abbrev-file-name (expand-file-name "abbrev.el" user-emacs-directory))) (setq abbrev-file-name (expand-file-name "abbrev.el" user-emacs-directory)))
(use-package autorevert (use-package autorevert
:straight nil :ensure nil
:diminish :diminish
:hook (after-init . global-auto-revert-mode)) :hook (elpaca-after-init . global-auto-revert-mode))
(use-package goto-addr (use-package goto-addr
:straight nil :ensure nil
:hook ((text-mode . goto-address-mode) :hook ((text-mode . goto-address-mode)
(prog-mode . goto-address-prog-mode))) (prog-mode . goto-address-prog-mode)))
@@ -93,7 +94,7 @@
(use-package ace-pinyin (use-package ace-pinyin
:diminish :diminish
:hook (after-init . ace-pinyin-global-mode)) :hook (elpaca-after-init . ace-pinyin-global-mode))
;; show number of matches ;; show number of matches
(use-package anzu (use-package anzu
@@ -103,7 +104,7 @@
:map isearch-mode-map :map isearch-mode-map
([remap isearch-query-replace] . anzu-isearch-query-replace) ([remap isearch-query-replace] . anzu-isearch-query-replace)
([remap isearch-query-replace-regexp] . anzu-isearch-query-replace-regexp)) ([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 ;; Goto last change
(use-package goto-chg (use-package goto-chg
@@ -116,11 +117,11 @@
;; Remember undo history ;; Remember undo history
(use-package undo-fu-session (use-package undo-fu-session
:hook (after-init . undo-fu-session-global-mode)) :hook (elpaca-after-init . undo-fu-session-global-mode))
;; Process ;; Process
(use-package proced (use-package proced
:straight nil :ensure nil
:init :init
(setq-default proced-format 'verbose) (setq-default proced-format 'verbose)
(setq proced-auto-update-flag t (setq proced-auto-update-flag t

View File

@@ -20,7 +20,7 @@
eglot-code-action-indications '(eldoc-hint))) eglot-code-action-indications '(eldoc-hint)))
(use-package eglot-booster (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 :after eglot
:config (eglot-booster-mode)) :config (eglot-booster-mode))
@@ -41,7 +41,7 @@
(use-package eldoc (use-package eldoc
:after eglot :after eglot
:straight nil :ensure nil
:diminish) :diminish)
(use-package eldoc-mouse (use-package eldoc-mouse

View File

@@ -51,14 +51,14 @@
;; Install use-package support ;; Install use-package support
(elpaca elpaca-use-package (elpaca elpaca-use-package
;; Enable use-package :straight support for Elpaca. ;; Enable use-package :ensure support for Elpaca.
(elpaca-use-package-mode)) (elpaca-use-package-mode))
;;When installing a package used in the init file itself, ;;When installing a package used in the init file itself,
;;e.g. a package which adds a use-package key word, ;;e.g. a package which adds a use-package key word,
;;use the :wait recipe keyword to block until that package is installed/configured. ;;use the :wait recipe keyword to block until that package is installed/configured.
;;For example: ;;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)) (setq elpaca-lock-file (expand-file-name "lock-file.eld" user-emacs-directory))
@@ -66,7 +66,30 @@
use-package-expand-minimally t use-package-expand-minimally t
use-package-always-defer 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))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View File

@@ -4,7 +4,7 @@
:hook ((emacs-lisp-mode . hydra-add-imenu))) :hook ((emacs-lisp-mode . hydra-add-imenu)))
(use-package pretty-hydra (use-package pretty-hydra
:straight (:wait t) :ensure (:wait t)
:hook (emacs-lisp-mode . (lambda () :hook (emacs-lisp-mode . (lambda ()
(add-to-list (add-to-list
'imenu-generic-expression 'imenu-generic-expression

View File

@@ -19,7 +19,7 @@
(lsp-mode . (lambda () (lsp-mode . (lambda ()
;; Integrate `which-key' ;; Integrate `which-key'
(lsp-enable-which-key-integration) (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)))) (add-hook 'before-save-hook #'lsp-organize-imports t t))))
:bind (:map lsp-mode-map :bind (:map lsp-mode-map
("C-c c d" . lsp-describe-thing-at-point) ("C-c c d" . lsp-describe-thing-at-point)
@@ -58,12 +58,7 @@
;; For diagnostics ;; For diagnostics
lsp-diagnostics-disabled-modes '(markdown-mode gfm-mode)) lsp-diagnostics-disabled-modes '(markdown-mode gfm-mode))
:config :config
(use-package consult-lsp
:bind (:map lsp-mode-map
("C-M-." . consult-lsp-symbols)))
(with-no-warnings (with-no-warnings
;; Disable `lsp-mode' in `git-timemachine-mode' ;; Disable `lsp-mode' in `git-timemachine-mode'
(defun my/lsp--init-if-visible (fn &rest args) (defun my/lsp--init-if-visible (fn &rest args)
@@ -77,8 +72,43 @@
(memq sh-shell '(sh bash zsh)))) (memq sh-shell '(sh bash zsh))))
(advice-add #'lsp-bash-check-sh-shell :override #'my/lsp-bash-check-sh-shell) (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")) (add-to-list 'lsp-language-id-configuration '(bash-ts-mode . "shellscript"))
:preface
(defun lsp-booster--advice-json-parse (old-fn &rest args)
"Try to parse bytecode instead of json."
(or
(when (equal (following-char) ?#)
(let ((bytecode (read (current-buffer))))
(when (byte-code-function-p bytecode)
(funcall bytecode))))
(apply old-fn args)))
(advice-add (if (progn (require 'json)
(fboundp 'json-parse-buffer))
'json-parse-buffer
'json-read)
:around
#'lsp-booster--advice-json-parse)
(use-package lsp-ui (defun lsp-booster--advice-final-command (old-fn cmd &optional test?)
"Prepend emacs-lsp-booster command to lsp CMD."
(let ((orig-result (funcall old-fn cmd test?)))
(if (and (not test?) ;; for check lsp-server-present?
(not (file-remote-p default-directory)) ;; see lsp-resolve-final-command, it would add extra shell wrapper
lsp-use-plists
(not (functionp 'json-rpc-connection)) ;; native json-rpc
(executable-find "emacs-lsp-booster"))
(progn
(when-let ((command-from-exec-path (executable-find (car orig-result)))) ;; resolve command from exec-path (in case not found in $PATH)
(setcar orig-result command-from-exec-path))
(message "Using emacs-lsp-booster for %s!" orig-result)
(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 :custom-face
(lsp-ui-sideline-code-action ((t (:inherit warning)))) (lsp-ui-sideline-code-action ((t (:inherit warning))))
:pretty-hydra :pretty-hydra
@@ -150,38 +180,5 @@
,(face-foreground 'font-lock-constant-face) ,(face-foreground 'font-lock-constant-face)
,(face-foreground 'font-lock-variable-name-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."
(or
(when (equal (following-char) ?#)
(let ((bytecode (read (current-buffer))))
(when (byte-code-function-p bytecode)
(funcall bytecode))))
(apply old-fn args)))
(advice-add (if (progn (require 'json)
(fboundp 'json-parse-buffer))
'json-parse-buffer
'json-read)
:around
#'lsp-booster--advice-json-parse)
(defun lsp-booster--advice-final-command (old-fn cmd &optional test?)
"Prepend emacs-lsp-booster command to lsp CMD."
(let ((orig-result (funcall old-fn cmd test?)))
(if (and (not test?) ;; for check lsp-server-present?
(not (file-remote-p default-directory)) ;; see lsp-resolve-final-command, it would add extra shell wrapper
lsp-use-plists
(not (functionp 'json-rpc-connection)) ;; native json-rpc
(executable-find "emacs-lsp-booster"))
(progn
(when-let ((command-from-exec-path (executable-find (car orig-result)))) ;; resolve command from exec-path (in case not found in $PATH)
(setcar orig-result command-from-exec-path))
(message "Using emacs-lsp-booster for %s!" orig-result)
(append (list "emacs-lsp-booster" "--") orig-result))
orig-result)))
(advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command)
)
(provide 'init-lsp) (provide 'init-lsp)

View File

@@ -85,7 +85,7 @@
(use-package meow (use-package meow
:demand t :demand t
:hook (after-init . meow-global-mode) :hook (elpaca-after-init . meow-global-mode)
:config :config
(meow-setup) (meow-setup)
(setq meow-replace-state-name-list (setq meow-replace-state-name-list

View File

@@ -2,7 +2,7 @@
(use-package tuareg (use-package tuareg
:straight t :ensure t
:mode (("\\.ocamlinit\\'" . tuareg-mode)) :mode (("\\.ocamlinit\\'" . tuareg-mode))
:config :config
(setq tuareg-prettify-symbols-full t)) (setq tuareg-prettify-symbols-full t))
@@ -20,7 +20,7 @@
(use-package utop) (use-package utop)
;; (use-package ocaml-eglot ;; (use-package ocaml-eglot
;; :straight t ;; :ensure t
;; :after tuareg ;; :after tuareg
;; :hook (tuareg-mode . ocaml-eglot) ;; :hook (tuareg-mode . ocaml-eglot)
;; :hook (ocaml-eglot . eglot-ensure) ;; :hook (ocaml-eglot . eglot-ensure)

View File

@@ -6,30 +6,32 @@
;; "* TODO %?\n%i\n%a" :prepend t)))) ;; "* TODO %?\n%i\n%a" :prepend t))))
(use-package org (use-package org
:straight (org :fork (:host nil :ensure (org (:repo "https://code.tecosaur.net/tec/org-mode.git"
:repo "https://code.tecosaur.net/tec/org-mode.git" :branch "dev"))
:branch "dev" ;; :ensure (org :fork (:host nil
:remote "tecosaur") ;; :repo "https://code.tecosaur.net/tec/org-mode.git"
:branch "dev" ;; :branch "dev")
:files (:defaults "etc") ;; :remote "tecosaur")
:build t ;; :branch "dev"
:pre-build ;; :files (:defaults "etc")
(with-temp-file "org-version.el" ;; :build t
(require 'lisp-mnt) ;; :pre-build
(let ((version ;; (with-temp-file "org-version.el"
(with-temp-buffer ;; (require 'lisp-mnt)
(insert-file-contents "lisp/org.el") ;; (let ((version
(lm-header "version"))) ;; (with-temp-buffer
(git-version ;; (insert-file-contents "lisp/org.el")
(string-trim ;; (lm-header "version")))
(with-temp-buffer ;; (git-version
(call-process "git" nil t nil "rev-parse" "--short" "HEAD") ;; (string-trim
(buffer-string))))) ;; (with-temp-buffer
(insert ;; (call-process "git" nil t nil "rev-parse" "--short" "HEAD")
(format "(defun org-release () \"The release version of Org.\" %S)\n" version) ;; (buffer-string)))))
(format "(defun org-git-version () \"The truncate git commit hash of Org mode.\" %S)\n" git-version) ;; (insert
"(provide 'org-version)\n"))) ;; (format "(defun org-release () \"The release version of Org.\" %S)\n" version)
:pin nil) ;; (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-cdlatex-mode)
:hook (org-mode . org-indent-mode) :hook (org-mode . org-indent-mode)
:hook (org-mode . visual-line-mode) :hook (org-mode . visual-line-mode)
@@ -175,7 +177,7 @@ the element after the #+HEADER: tag."
)) ))
(use-package org-modern-indent (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 :config ; add late to hook
(add-hook 'org-mode-hook #'org-modern-indent-mode 90)) (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)) (run-at-time nil nil #'org-appear--set-elements))
(use-package hl-todo (use-package hl-todo
:hook (after-init . global-hl-todo-mode) :hook (elpaca-after-init . global-hl-todo-mode)
:config :config
(setq hl-todo-highlight-punctuation ":" (setq hl-todo-highlight-punctuation ":"
hl-todo-keyword-faces hl-todo-keyword-faces
@@ -214,7 +216,7 @@ the element after the #+HEADER: tag."
("XXX" font-lock-constant-face bold)))) ("XXX" font-lock-constant-face bold))))
(use-package org-latex-preview (use-package org-latex-preview
:straight nil :ensure nil
:hook (org-mode . org-latex-preview-mode) :hook (org-mode . org-latex-preview-mode)
:hook (org-latex-preview-mode . org-latex-preview-center-mode) :hook (org-latex-preview-mode . org-latex-preview-center-mode)
:config :config
@@ -323,10 +325,8 @@ the element after the #+HEADER: tag."
(use-package valign (use-package valign
:hook (org-mode . valign-mode)) :hook (org-mode . valign-mode))
(use-package org-noter (use-package djvu)
:config (use-package org-noter)
(use-package djvu))
;; Enable lsp in org-babel ;; Enable lsp in org-babel
(cl-defmacro lsp-org-babel-enable (lang) (cl-defmacro lsp-org-babel-enable (lang)

View File

@@ -3,7 +3,7 @@
;; Python Mode ;; Python Mode
;; Install: pip install pyflakes autopep8 ;; Install: pip install pyflakes autopep8
(use-package python (use-package python
:straight nil :ensure nil
:functions exec-path-from-shell-copy-env :functions exec-path-from-shell-copy-env
:hook (inferior-python-mode . (lambda () :hook (inferior-python-mode . (lambda ()
(process-query-on-exit-flag (process-query-on-exit-flag

View File

@@ -1,7 +1,7 @@
;; -*- lexical-binding: t; -*- ;; -*- lexical-binding: t; -*-
(use-package shell (use-package shell
:straight nil :ensure nil
:hook ((shell-mode . my/shell-mode-hook) :hook ((shell-mode . my/shell-mode-hook)
(comint-output-filter-functions . comint-strip-ctrl-m)) (comint-output-filter-functions . comint-strip-ctrl-m))
:init :init
@@ -149,7 +149,7 @@
:bind ("C-`" . eshell-toggle) :bind ("C-`" . eshell-toggle)
:hook ((eshell-load . eat-eshell-mode) :hook ((eshell-load . eat-eshell-mode)
(eshell-load . eat-eshell-visual-command-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" :files ("*.el" ("term" "term/*.el") "*.texi"
"*.ti" ("terminfo/e" "terminfo/e/*") "*.ti" ("terminfo/e" "terminfo/e/*")
("terminfo/65" "terminfo/65/*") ("terminfo/65" "terminfo/65/*")
@@ -195,7 +195,7 @@
(use-package eshell-syntax-highlighting (use-package eshell-syntax-highlighting
:after eshell-mode :after eshell-mode
:hook (after-init . eshell-syntax-highlighting-global-mode)) :hook (elpaca-after-init . eshell-syntax-highlighting-global-mode))
(provide 'init-shell) (provide 'init-shell)

View File

@@ -3,13 +3,12 @@
;; Yasnippet settings ;; Yasnippet settings
(use-package yasnippet (use-package yasnippet
:diminish :diminish
:hook (after-init . yas-global-mode) :hook (elpaca-after-init . yas-global-mode)
:hook ((LaTeX-mode . yas-minor-mode) :hook ((post-self-insert . my/yas-try-expanding-auto-snippets))
(post-self-insert . my/yas-try-expanding-auto-snippets))
:config :config
(elemacs-load-packages-incrementally '(eldoc easymenu help-mode)) (elemacs-load-packages-incrementally '(eldoc easymenu help-mode))
(use-package warnings (use-package warnings
:straight nil :ensure nil
:config :config
(cl-pushnew '(yasnippet backquote-change) (cl-pushnew '(yasnippet backquote-change)
warning-suppress-types warning-suppress-types
@@ -28,7 +27,7 @@
(yas-expand))))) (yas-expand)))))
;; Collection of yasnippet snippets ;; Collection of yasnippet snippets
;; (use-package yasnippet-snippets) (use-package yasnippet-snippets)

View File

@@ -1,10 +1,23 @@
;; -*- lexical-binding: t; -*- ;; -*- lexical-binding: t; -*-
(use-package latex (use-package latex
;; :straight (auctex :pre-build (("./autogen.sh") :after tex
;; ("./configure" "--without-texmf-dir" "--with-lispdir=.") :ensure (auctex :pre-build (("./autogen.sh")
;; ("make"))) ("./configure" "--without-texmf-dir" "--with-lispdir=.")
:straight (auctex :type git :host nil :repo "https://git.savannah.gnu.org/git/auctex.git") ("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)) :mode (("\\.tex\\'" . LaTeX-mode))
:hook ((LaTeX-mode . prettify-symbols-mode) :hook ((LaTeX-mode . prettify-symbols-mode)
(LaTeX-mode . visual-line-mode) (LaTeX-mode . visual-line-mode)

View File

@@ -17,7 +17,7 @@
treemacs-missing-project-action 'remove treemacs-missing-project-action 'remove
treemacs-user-mode-line-format 'none treemacs-user-mode-line-format 'none
treemacs-sorting 'alphabetic-asc treemacs-sorting 'alphabetic-asc
treemacs-follow-after-init t treemacs-follow-elpaca-after-init t
treemacs-width 30 treemacs-width 30
treemacs-show-hidden-files nil treemacs-show-hidden-files nil
treemacs-silent-refresh t treemacs-silent-refresh t
@@ -41,7 +41,7 @@
(use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode (use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode
:after (treemacs) :after (treemacs)
:straight t :ensure t
:config (treemacs-set-scope-type 'Tabs)) :config (treemacs-set-scope-type 'Tabs))
(use-package treemacs-nerd-icons (use-package treemacs-nerd-icons

View File

@@ -2,7 +2,7 @@
(use-package typst-ts-mode (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 :custom
;; (typst-ts-watch-options "--open") ;; (typst-ts-watch-options "--open")
(typst-ts-mode-grammar-location (expand-file-name "tree-sitter/libtree-sitter-typst.so" user-emacs-directory)) (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)) (setq typst-ts-preview-function 'find-file-other-window))
(use-package typst-preview (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 :init
(setq typst-preview-autostart t) ; start preview automatically when typst-preview-mode is activated (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 (setq typst-preview-open-browser-automatically t) ; open browser automatically when typst-preview-start is run

View File

@@ -19,7 +19,7 @@
(add-to-list 'default-frame-alist '(undecorated-round . t)) (add-to-list 'default-frame-alist '(undecorated-round . t))
(use-package solaire-mode (use-package solaire-mode
:hook (after-init . solaire-global-mode)) :hook (elpaca-after-init . solaire-global-mode))
(use-package modus-themes (use-package modus-themes
:init :init
@@ -65,7 +65,7 @@
;; something to execute when light mode is detected ;; something to execute when light mode is detected
(doric-themes-load-random 'light) (doric-themes-load-random 'light)
)) ))
:hook after-init) :hook elpaca-after-init)
(use-package rainbow-delimiters (use-package rainbow-delimiters
:hook ((prog-mode . rainbow-delimiters-mode) :hook ((prog-mode . rainbow-delimiters-mode)
@@ -80,7 +80,7 @@
:hook emacs-startup) :hook emacs-startup)
;; (use-package doom-modeline ;; (use-package doom-modeline
;; :hook (after-init . doom-modeline-mode) ;; :hook (elpaca-after-init . doom-modeline-mode)
;; :config ;; :config
;; (setq doom-modeline-support-imenu t ;; (setq doom-modeline-support-imenu t
;; doom-modeline-height 30 ;; doom-modeline-height 30
@@ -129,13 +129,13 @@
(use-package diff-hl (use-package diff-hl
:diminish :diminish
:hook (after-init global-diff-hl-mode) :hook (elpaca-after-init global-diff-hl-mode)
:hook (after-init diff-hl-dired-mode) :hook (elpaca-after-init diff-hl-dired-mode)
:hook (after-init diff-hl-flydiff-mode)) :hook (elpaca-after-init diff-hl-flydiff-mode))
;; Easily adjust the font size in all frames ;; Easily adjust the font size in all frames
(use-package default-text-scale (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 :bind (:map default-text-scale-mode-map
("C-s-=" . default-text-scale-increase) ("C-s-=" . default-text-scale-increase)
("C-s--" . default-text-scale-decrease) ("C-s--" . default-text-scale-decrease)
@@ -153,7 +153,7 @@
mouse-wheel-progressive-speed nil) mouse-wheel-progressive-speed nil)
(use-package nerd-icons (use-package nerd-icons
:straight (nerd-icons :ensure (nerd-icons
:type git :type git
:host github :host github
:repo "rainstormstudio/nerd-icons.el") :repo "rainstormstudio/nerd-icons.el")
@@ -170,7 +170,7 @@
;; :commands transient-posframe-mode ;; :commands transient-posframe-mode
;; :custom-face ;; :custom-face
;; (transient-posframe-border ((t (:inherit posframe-border :background unspecified)))) ;; (transient-posframe-border ((t (:inherit posframe-border :background unspecified))))
;; :hook after-init ;; :hook elpaca-after-init
;; :init (setq transient-mode-line-format nil ;; :init (setq transient-mode-line-format nil
;; transient-posframe-parameters '((left-fringe . 8) ;; transient-posframe-parameters '((left-fringe . 8)
;; (right-fringe . 8)))) ;; (right-fringe . 8))))
@@ -184,15 +184,15 @@
(use-package beacon (use-package beacon
:diminish :diminish
:hook after-init) :hook elpaca-after-init)
(use-package spacious-padding (use-package spacious-padding
:diminish :diminish
:hook after-init) :hook elpaca-after-init)
;; Eval result overlay ;; Eval result overlay
(use-package eros (use-package eros
:hook after-init :hook elpaca-after-init
:bind (([remap eval-defun] . eros-eval-defun) :bind (([remap eval-defun] . eros-eval-defun)
([remap eval-last-sexp] . eros-eval-last-sexp))) ([remap eval-last-sexp] . eros-eval-last-sexp)))

View File

@@ -1,10 +1,12 @@
;; -*- lexical-binding: t; -*- ;; -*- lexical-binding: t; -*-
(use-package transient)
(use-package which-key (use-package which-key
:diminish :diminish
:functions childframe-completion-workable-p :functions childframe-completion-workable-p
:bind ("C-h M-m" . which-key-show-major-mode) :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 :init (setq which-key-max-description-length 30
which-key-idle-delay 0.5 which-key-idle-delay 0.5
which-key-lighter nil which-key-lighter nil
@@ -29,7 +31,7 @@
(which-key-add-key-based-replacements "C-x v" "version control")) (which-key-add-key-based-replacements "C-x v" "version control"))
(use-package grep (use-package grep
:straight nil :ensure nil
:autoload grep-apply-setting :autoload grep-apply-setting
:init :init
(when (executable-find "rg") (when (executable-find "rg")
@@ -49,7 +51,7 @@
;; Fast search tool `ripgrep' ;; Fast search tool `ripgrep'
(use-package rg (use-package rg
;; :hook (after-init . rg-enable-default-bindings) ;; :hook (elpaca-after-init . rg-enable-default-bindings)
:bind (:map rg-global-map :bind (:map rg-global-map
("c" . rg-dwim-current-dir) ("c" . rg-dwim-current-dir)
("f" . rg-dwim-current-file) ("f" . rg-dwim-current-file)
@@ -69,7 +71,7 @@
;; :demand t) ;; :demand t)
;; (use-package keycast ;; (use-package keycast
;; :hook (after-init . keycast-mode-line-mode) ;; :hook (elpaca-after-init . keycast-mode-line-mode)
;; :config ;; :config
;; (setq keycast-mode-line-remove-tail-elements nil)) ;; (setq keycast-mode-line-remove-tail-elements nil))

View File

@@ -1,7 +1,5 @@
;; -*- lexical-binding: t; -*- ;; -*- lexical-binding: t; -*-
(use-package transient)
(use-package magit (use-package magit
:defer t :defer t
:bind (("C-c g" . magit-dispatch)) :bind (("C-c g" . magit-dispatch))
@@ -49,7 +47,7 @@
(user-error "Cannot revert the timemachine buffer")))))) (user-error "Cannot revert the timemachine buffer"))))))
(use-package smerge-mode (use-package smerge-mode
:straight nil :ensure nil
:diminish :diminish
:pretty-hydra :pretty-hydra
((:title (pretty-hydra-title "Smerge" 'octicon "nf-oct-diff") ((:title (pretty-hydra-title "Smerge" 'octicon "nf-oct-diff")

View File

@@ -2,9 +2,9 @@
;; Restore old window configurations ;; Restore old window configurations
(use-package winner (use-package winner
:straight nil :ensure nil
:commands (winner-undo winner-redo) :commands (winner-undo winner-redo)
:hook after-init :hook elpaca-after-init
:init (setq winner-boring-buffers '("*Completions*" :init (setq winner-boring-buffers '("*Completions*"
"*Compile-Log*" "*Compile-Log*"
"*inferior-lisp*" "*inferior-lisp*"

View File

@@ -3,7 +3,7 @@
;; (use-package project) ;; (use-package project)
(use-package projectile (use-package projectile
:hook after-init :hook elpaca-after-init
:config :config
;; Recommended keymap prefix on macOS ;; Recommended keymap prefix on macOS
(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map) (define-key projectile-mode-map (kbd "s-p") 'projectile-command-map)
@@ -15,7 +15,7 @@
:bind ("C-x C-b" . ibuffer) :bind ("C-x C-b" . ibuffer)
:init (setq ibuffer-filter-group-name-face '(:inherit (font-lock-string-face bold)))) :init (setq ibuffer-filter-group-name-face '(:inherit (font-lock-string-face bold))))
(use-package nerd-icons-ibuffer (use-package nerd-icons-ibuffer
:straight t :ensure t
:hook (ibuffer-mode-hook . nerd-icons-ibuffer-mode)) :hook (ibuffer-mode-hook . nerd-icons-ibuffer-mode))
(use-package ibuffer-projectile (use-package ibuffer-projectile
:init :init
@@ -26,7 +26,7 @@
(ibuffer-do-sort-by-alphabetic))))) (ibuffer-do-sort-by-alphabetic)))))
(use-package beframe (use-package beframe
:hook after-init :hook elpaca-after-init
:bind ("C-x f" . other-frame-prefix) :bind ("C-x f" . other-frame-prefix)
:config :config
(define-key global-map (kbd "C-c b") #'beframe-prefix-map) (define-key global-map (kbd "C-c b") #'beframe-prefix-map)