diff --git a/.gitignore b/.gitignore index a4f2c0c..fb3fcab 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,4 @@ history /easysession /tramp-rpc /straight/ +/eaf/ diff --git a/early-init.el b/early-init.el index 467f3ff..203bab3 100644 --- a/early-init.el +++ b/early-init.el @@ -42,7 +42,7 @@ inhibit-startup-screen t inhibit-startup-echo-area-message user-login-name inhibit-default-init t - initial-major-mode 'fundamental-mode + ;; initial-major-mode 'l-mode initial-scratch-message nil) ;; Faster to disable these here (before they've been initialized) diff --git a/init.el b/init.el index fc10b71..a57e716 100644 --- a/init.el +++ b/init.el @@ -41,6 +41,7 @@ (require 'init-input) (require 'init-utils) +;; (require 'init-eaf) (require 'init-coding) (require 'init-vcs) @@ -59,7 +60,7 @@ (require 'init-haskell) (require 'init-rust) (require 'init-ocaml) -;; (require 'init-typst) +(require 'init-typst) (provide 'init) diff --git a/lisp/init-better-default.el b/lisp/init-better-default.el index c88ab41..01c4048 100644 --- a/lisp/init-better-default.el +++ b/lisp/init-better-default.el @@ -93,11 +93,11 @@ If this is a daemon session, load them all immediately instead." ;; Start server (use-package server :ensure nil + :autoload server-running-p :hook (emacs-startup . (lambda () - (unless server-mode + (unless (server-running-p) (server-mode 1))))) -;; Save place (use-package saveplace :ensure nil :hook (elpaca-after-init . save-place-mode)) @@ -201,14 +201,6 @@ If this is a daemon session, load them all immediately instead." x-stretch-cursor t window-combination-resize t) -(define-key global-map (kbd "C-") nil) -(define-key global-map (kbd "C-") nil) -(global-set-key (kbd "s-a") 'mark-whole-buffer) ;;对应Windows上面的Ctrl-a 全选 -(global-set-key (kbd "s-c") 'kill-ring-save) ;;对应Windows上面的Ctrl-c 复制 -(global-set-key (kbd "s-s") 'save-buffer) ;; 对应Windows上面的Ctrl-s 保存 -(global-set-key (kbd "s-v") 'yank) ;对应Windows上面的Ctrl-v 粘贴 -(global-set-key (kbd "s-z") 'undo) ;对应Windows上面的Ctrol-z 撤销 - (setq kill-ring-max 200) ;; Save clipboard contents into kill-ring before replace them (setq save-interprogram-paste-before-kill t) diff --git a/lisp/init-bindings.el b/lisp/init-bindings.el index 36e686d..496f838 100644 --- a/lisp/init-bindings.el +++ b/lisp/init-bindings.el @@ -1,12 +1,13 @@ ;; -*- lexical-binding: t -*- -(define-prefix-command 'orgmode-map) -(global-set-key (kbd "C-c n") 'orgmode-map) - -(define-key orgmode-map (kbd "a") #'org-agenda) -(define-key orgmode-map (kbd "n") #'org-capture) -(define-key orgmode-map (kbd "t") #'org-todo-list) - +(define-key global-map (kbd "C-") nil) +(define-key global-map (kbd "C-") nil) +(global-set-key (kbd "s-a") 'mark-whole-buffer) ;;对应Windows上面的Ctrl-a 全选 +(global-set-key (kbd "s-c") 'kill-ring-save) ;;对应Windows上面的Ctrl-c 复制 +(global-set-key (kbd "s-s") 'save-buffer) ;; 对应Windows上面的Ctrl-s 保存 +(global-set-key (kbd "s-v") 'yank) ;对应Windows上面的Ctrl-v 粘贴 +(global-set-key (kbd "s-x") 'execute-extended-command) ;对应Windows上面的Ctrol-z 撤销 +(global-set-key (kbd "s-z") 'undo) ;对应Windows上面的Ctrol-z 撤销 (setq duplicate-line-final-position 1) (global-set-key (kbd "M-p") #'duplicate-dwim) diff --git a/lisp/init-eaf.el b/lisp/init-eaf.el index ecd192e..5a3f317 100644 --- a/lisp/init-eaf.el +++ b/lisp/init-eaf.el @@ -7,18 +7,22 @@ (eaf-browser-continue-where-left-off t) (eaf-browser-enable-adblocker t) ;; (browse-url-browser-function 'eaf-open-browser) + :defines eaf-pdf-viewer-keybinding :config (require 'eaf-pdf-viewer) (require 'eaf-music-player) + ;; (require 'eaf-jupyter) + (require 'eaf-mindmap) + (require 'eaf-markdown-previewer) + (require 'eaf-system-monitor) + (require 'eaf-js-video-player) (require 'eaf-image-viewer) - ;; (defalias 'browse-web #'eaf-open-browser) - ;; (eaf-bind-key scroll_up "C-n" eaf-pdf-viewer-keybinding) - ;; (eaf-bind-key scroll_down "C-p" eaf-pdf-viewer-keybinding) - ;; (eaf-bind-key take_photo "p" eaf-camera-keybinding) - ;; (eaf-bind-key nil "M-q" eaf-browser-keybinding) + (eaf-bind-key scroll_up "C-n" eaf-pdf-viewer-keybinding) + (eaf-bind-key scroll_down "C-p" eaf-pdf-viewer-keybinding) ) + (provide 'init-eaf) diff --git a/lisp/init-edit.el b/lisp/init-edit.el index 82fee89..bfd22f1 100644 --- a/lisp/init-edit.el +++ b/lisp/init-edit.el @@ -6,13 +6,24 @@ (use-package electric-pair-mode :ensure nil - :hook elpaca-after-init) + :hook elpaca-after-init + :config + (dolist (mode '(LaTeX-mode-hook org-mode-hook)) + (add-hook mode + (lambda () + (setq-local electric-pair-pairs + (append electric-pair-pairs '((?\\ . ?\\)))) + (setq-local electric-pair-text-pairs electric-pair-pairs))))) (use-package puni :hook (elpaca-after-init . puni-global-mode) + :custom + (puni-confirm-when-delete-unbalanced-active-region nil) :bind (:map puni-mode-map ("M-s" . puni-splice) - ("DEL" . my-backspace)) + ("DEL" . my-backspace) + ("C-=" . puni-expand-region) + ) :init (defun my-backspace () (interactive) @@ -20,14 +31,14 @@ (delete-region (line-beginning-position) (point)) (puni-backward-delete-char)))) -;; ;; Hungry deletion -;; (use-package hungry-delete -;; :diminish -;; :hook (elpaca-after-init . global-hungry-delete-mode) -;; :init (setq hungry-delete-chars-to-skip " \t\f\v" -;; backward-delete-char-untabify-method 'all -;; hungry-delete-except-modes -;; '(help-mode minibuffer-mode minibuffer-inactive-mode calc-mode))) +;; (use-package combobulate +;; :ensure (:host github :repo "mickeynp/combobulate") +;; :hook prog-mode +;; :config +;; ;; You can customize Combobulate's key prefix here. +;; ;; Note that you may have to restart Emacs for this to take effect! +;; (setq combobulate-key-prefix "C-c o") +;; ) (use-package abbrev :ensure nil @@ -59,8 +70,8 @@ :map mc/keymap ("C-|" . mc/vertical-align-with-space))) -(use-package expand-region - :bind ("C-=" . er/expand-region)) +;; (use-package expand-region +;; :bind ("C-=" . er/expand-region)) (use-package mwim :bind (([remap move-beginning-of-line] . mwim-beginning) @@ -123,7 +134,7 @@ :custom (olivetti-style 'fancy) (olivetti-margin-width 5) - (olivetti-body-width 90)) + (olivetti-body-width 80)) (setq-default bidi-display-reordering 'left-to-right bidi-paragraph-direction 'left-to-right diff --git a/lisp/init-input.el b/lisp/init-input.el index 1d2733f..0972be2 100644 --- a/lisp/init-input.el +++ b/lisp/init-input.el @@ -5,6 +5,13 @@ (default-input-method "rime") (rime-librime-root "/opt/homebrew") (rime-emacs-module-header-root "~/build-emacs-for-macos/builds/Emacs.app/Contents/Resources/include/") - (rime-show-candidate 'posframe)) + (rime-show-candidate 'posframe) + (rime-posframe-properties nil)) + +;; (use-package sis +;; :hook ((elpaca-after-init . sis-global-respect-mode) +;; (elpaca-after-init . sis-global-context-mode) +;; (elpaca-after-init . sis-global-inline-mode))) + (provide 'init-input) diff --git a/lisp/init-lsp.el b/lisp/init-lsp.el index 8b2f2e3..d83c5be 100644 --- a/lisp/init-lsp.el +++ b/lisp/init-lsp.el @@ -13,7 +13,7 @@ (unless (derived-mode-p 'emacs-lisp-mode 'lisp-mode 'makefile-mode 'snippet-mode - 'ron-mode) + 'lisp-data-mode 'ron-mode) (lsp-deferred)))) ((markdown-mode yaml-mode yaml-ts-mode) . lsp-deferred) (lsp-mode . (lambda () diff --git a/lisp/init-org.el b/lisp/init-org.el index 72cbb2b..36e4e60 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -4,9 +4,9 @@ :defer :ensure (org :repo "https://code.tecosaur.net/tec/org-mode.git/" :branch "dev") - :hook (org-mode . org-cdlatex-mode) - :hook (org-mode . org-indent-mode) - :hook (org-mode . visual-line-mode) + :hook ((org-mode . org-cdlatex-mode) + (org-mode . org-indent-mode) + (org-mode . visual-line-mode)) :pretty-hydra ;; See `org-structure-template-alist' ((:color blue :quit-key ("q" "C-g")) @@ -54,6 +54,9 @@ (self-insert-command 1)))) ("M-" . org-insert-subheading) ("C-'" . nil)) + :bind (("C-c n t" . org-todo-list) + ("C-c n a" . org-agenda) + ("C-c n n" . org-capture)) :config (elemacs-load-packages-incrementally '(calendar find-func format-spec org-macs org-compat @@ -96,7 +99,7 @@ the element after the #+HEADER: tag." (setq org-pretty-entities t org-pretty-entities-include-sub-superscripts nil) - + (setq org-default-note-file (expand-file-name "notes.org" org-directory) org-capture-templates '(("t" "Personal todo" entry diff --git a/lisp/init-tex.el b/lisp/init-tex.el index 23a2072..8fd8351 100644 --- a/lisp/init-tex.el +++ b/lisp/init-tex.el @@ -75,7 +75,14 @@ ;; (with-eval-after-load 'eglot ;; (add-to-list 'eglot-server-programs '((LaTeX-mode latex-mode) "texlab"))) - (setq reftex-plug-into-AUCTeX t)) + (setq reftex-plug-into-AUCTeX t) + (use-package texpresso + :ensure (:host github :repo "let-def/texpresso" :files ("emacs/*.el")) + :hook (texpresso-mode . texpresso-sync-mode) + :after auctex + :bind (:map LaTeX-mode-map + ("C-c C-p" . texpresso))) + ) (use-package cdlatex :diminish @@ -139,8 +146,4 @@ expansion, then cdlatex expansion." (cdlatex-reset-mode) ) -;; (use-package texpresso -;; :defer nil -;; :load-path "~/.emacs.d/lisp/packages/") - (provide 'init-tex) diff --git a/lisp/init-ui.el b/lisp/init-ui.el index 5079d94..cab5d9f 100644 --- a/lisp/init-ui.el +++ b/lisp/init-ui.el @@ -60,6 +60,7 @@ (ef-themes-take-over-modus-themes-mode 1)) (use-package auto-dark + :when (and (eq system-type 'darwin) (display-graphic-p)) :ensure t ;; :custom ;; (auto-dark-themes '((doric-beach) (leuven))) @@ -80,6 +81,7 @@ )) :hook elpaca-after-init) + (use-package rainbow-delimiters :hook ((prog-mode . rainbow-delimiters-mode) (typst-ts-mode . rainbow-delimiters-mode) @@ -90,12 +92,14 @@ :hook prog-mode) (use-package mood-line - :hook emacs-startup) + :hook emacs-startup + :custom (mood-line-glyph-alist mood-line-glyphs-fira-code)) ;; (use-package doom-modeline ;; :hook (elpaca-after-init . doom-modeline-mode) ;; :config ;; (setq doom-modeline-support-imenu t +;; doom-modeline-icons nil ;; doom-modeline-height 30 ;; doom-modeline-buffer-file-name-style 'relative-from-project ;; doom-modeline-enable-word-count t @@ -125,7 +129,7 @@ ;; ('darwin ; macOS (set-face-attribute 'default nil :font "Sarasa Term SC-22") ; 20 * 1.5 (set-face-attribute 'variable-pitch nil :font "Bookerly-20" :weight 'light) -(set-face-attribute 'fixed-pitch nil :font "Sarasa Term SC-22") +(set-face-attribute 'fixed-pitch nil :font "Sarasa Mono TC Nerd Font-22") (add-to-list 'default-frame-alist '(height . 53)) (add-to-list 'default-frame-alist '(width . 90)) @@ -169,24 +173,13 @@ :ensure (nerd-icons :type git :host github - :repo "rainstormstudio/nerd-icons.el") - ;; :files (:defaults "data")) - :custom - ;; The Nerd Font you want to use in GUI - ;; "Symbols Nerd Font Mono" is the default and is recommended - ;; but you can use any other Nerd Font if you want - (nerd-icons-font-family "Symbols Nerd Font Mono")) - -;; Display transient in child frame -;; (use-package transient-posframe -;; :diminish -;; :commands transient-posframe-mode -;; :custom-face -;; (transient-posframe-border ((t (:inherit posframe-border :background unspecified)))) -;; :hook elpaca-after-init -;; :init (setq transient-mode-line-format nil -;; transient-posframe-parameters '((left-fringe . 8) -;; (right-fringe . 8)))) + :repo "rainstormstudio/nerd-icons.el")) +;; :files (:defaults "data")) +;; :custom +;; The Nerd Font you want to use in GUI +;; "Symbols Nerd Font Mono" is the default and is recommended +;; but you can use any other Nerd Font if you want +;; (nerd-icons-font-family "Symbols Nerd Font Mono")) (with-no-warnings (when (featurep 'ns) @@ -195,10 +188,6 @@ ;; Don't open a file in a new frame (setq ns-pop-up-frames nil))) -;; (use-package beacon -;; :diminish -;; :hook elpaca-after-init) - ;; hl current line (use-package hl-line :ensure nil @@ -206,8 +195,9 @@ ((dashboard-mode eshell-mode shell-mode term-mode vterm-mode eat-mode) . (lambda () (setq-local global-hl-line-mode nil))))) -(use-package beacon - :hook elpaca-after-init) +;; (use-package beacon +;; :diminish +;; :hook elpaca-after-init) (use-package spacious-padding :diminish diff --git a/lisp/init-utils.el b/lisp/init-utils.el index 88f6447..ebf7ccd 100644 --- a/lisp/init-utils.el +++ b/lisp/init-utils.el @@ -72,4 +72,34 @@ (use-package elcord) +;; (when (display-graphic-p) +;; (use-package pdf-view +;; :ensure pdf-tools +;; :diminish (pdf-view-themed-minor-mode +;; pdf-view-midnight-minor-mode +;; pdf-view-roll-minor-mode +;; pdf-view-printer-minor-mode) +;; :functions pdf-tools-install +;; :hook ((pdf-tools-enabled . pdf-view-auto-slice-minor-mode) +;; (pdf-tools-enabled . pdf-view-roll-minor-mode) +;; (pdf-tools-enabled . pdf-isearch-minor-mode)) +;; ;; :mode ("\\.[pP][dD][fF]\\'" . pdf-view-mode) +;; :magic ("%PDF" . pdf-view-mode) +;; :bind (:map pdf-view-mode-map +;; ("C-s" . isearch-forward)) +;; ;; :init (setq pdf-view-use-scaling t +;; ;; pdf-view-use-imagemagick nil) +;; :config +;; ;; Activate the package +;; (pdf-tools-install t nil t nil)) +;; ;; Recover last viewed position +;; (use-package saveplace-pdf-view +;; :when (ignore-errors (pdf-info-check-epdfinfo) t) +;; :autoload (saveplace-pdf-view-find-file-advice saveplace-pdf-view-to-alist-advice) +;; :functions pdf-info-check-epdfinfo +;; :init +;; (advice-add 'save-place-find-file-hook :around #'saveplace-pdf-view-find-file-advice) +;; (advice-add 'save-place-to-alist :around #'saveplace-pdf-view-to-alist-advice))) + + (provide 'init-utils)