1;;; package --- 初始化各种独立应用工具2;;; Commentary:3;;; Code:45;;; 剪切板6(use-package clipetty7 :hook (after-init . global-clipetty-mode))8910;; magit11(use-package magit12 :after git-email13 :hook (magit-mode . git-email-magit-setup)14 :demand t)1516(use-package git-email17 :vc (git-email :url "https://codeberg.org/suhail/git-email.git"18 :branch "default"19 :rev :newest20 :doc "./doc/git-email.texi")21 :config22 (setenv "INFOPATH"23 (concat (file-name-directory (find-library-name "git-email"))24 ":" (getenv "INFOPATH")))25 (setq git-email-compose-email-function #'mu4e-compose-new)26 (with-eval-after-load 'magit27 (git-email-magit-setup))28 :bind (:map dired-mode-map29 ("M-." . #'git-email-send-email)))3031;; 彩色括号32(use-package rainbow-delimiters33 :hook (prog-mode . rainbow-delimiters-mode))3435;; 谷歌翻译36(use-package google-translate37 :init38 (setq google-translate-translation-directions-alist39 '(("en" . "zh-CN") ("zh-CN" . "en") ("en" . "de")))40 (add-to-list 'display-buffer-alist '("*Google Translate*"41 (display-buffer-in-side-window)42 (side . right)43 (window-width . 0.2)44 (slot . 0)))4546 :config47 (require 'google-translate-smooth-ui)4849 :bind50 (("C-c t" . google-translate-smooth-translate)))5152;; dired 插件53(use-package dired-subtree)54(use-package dired55 :ensure nil56 :init57 (require 'dired-x)58 (defun dired-view-file-other-window()59 "In Dired, view file or diretory in other buffer."60 (interactive)61 (let ((file (dired-get-file-for-visit)))62 (if (file-directory-p file)63 (or (and (cdr dired-subdir-alist)64 (dired-goto-subdir file))65 (dired-other-window file))66 (view-file-other-window file))))67 :hook68 (dired-mode . (lambda () (dired-omit-mode)))69 :config70 (setq dired-omit-files ;; hide .dot files when in dired-omit-mode71 (concat dired-omit-files "\\|^\\..+$"))72 :bind (:map dired-mode-map73 ("C->" . dired-omit-mode)74 ("q" . quit-window)75 ("TAB" . dired-subtree-toggle)76 ("V" . dired-view-file-other-window)))7778;; restclient79(use-package restclient80 :config81 (require 'restclient-jq))82(use-package ob-restclient)83(use-package restclient-jq)8485;; 邮件86;; 收件配置87(use-package mu4e88 :ensure nil89 :pin manual90 :load-path "/usr/share/emacs/site-lisp/mu4e"91 :bind (("C-x m" . mu4e-compose-new))92 :hook (mu4e-compose-mode . (lambda () (auto-save-mode -1)))93 :commands mu4e94 :config9596 (add-to-list 'display-buffer-alist97 `(,(regexp-quote mu4e-main-buffer-name)98 display-buffer-same-window))99100 (keymap-unset mu4e-search-minor-mode-map "M-<right>")101 (keymap-unset mu4e-search-minor-mode-map "M-<left>")102 (setf (plist-get (alist-get 'trash mu4e-marks) :action)103 (lambda (docid msg target)104 (mu4e--server-move docid (mu4e--mark-check-target target) "-N")))105 (require 'mu4e-notification)106 (setq mu4e-maildir "~/.mail")107 (setq mu4e-get-mail-command "mbsync -a -c ~/.config/mbsync/config"108 mu4e-update-interval 300)109 (setq user-mail-address "i@lin.moe"110 user-full-name "Linsen Zhou"111 mu4e-sent-folder "/Sent"112 mu4e-drafts-folder "/Drafts"113 mu4e-trash-folder "/Trash"114 mu4e-refile-folder "/Archive")115116 (setq mu4e-headers-thread-root-prefix '("* " . "□ ")117 mu4e-headers-thread-child-prefix '(" >" . "│ ")118 mu4e-headers-thread-first-child-prefix '(" >" . "⚬ ")119 mu4e-headers-thread-last-child-prefix '(" >" . "└ "))120 (setq mu4e-change-filenames-when-moving t121 mu4e-search-include-related t)122123 (setq mu4e-maildir-shortcuts '(( :name "Inbox"124 :key ?i125 :maildir "/Inbox")126 ( :name "Archive"127 :key ?a128 :maildir "/Archive")129 ( :name "Drafts"130 :key ?d131 :maildir "/Drafts")))132133 (setq mu4e-bookmarks '(( :name "Today's messages"134 :query "date:today..now"135 :key ?t)136 ( :name "Flagged"137 :key ?f138 :query "flag:flagged")139140 ( :name "Mailing list"141 :query "flag:list AND NOT maildir:/Trash NOT maildir:/Archive AND NOT flag:trashed"142 :key ?l)143144 ( :name "Business(Linakesi)"145 :key ?k146 :favorite t147 :query "contact:zhoulinsen@linakesi.com AND NOT maildir:/Trash NOT maildir:/Archive AND NOT flag:trashed")148149 ( :name "Unread messages"150 :query "flag:unread AND NOT maildir:/Trash AND NOT maildir:/Junk AND NOT flag:trashed"151 :key ?u))))152(use-package mu4e-alert153 :hook (after-init . mu4e-alert-enable-notifications)154 :config155 (setq mu4e-alert-interesting-mail-query156 (concat157 "flag:unread"158 " AND NOT flag:trashed"159 " AND NOT maildir:/Trash"160 " AND NOT maildir:/Junk")))161162;; 发件配置163(use-package smtpmail164 :init165 (add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime)166 (setq send-mail-function 'smtpmail-send-it167 user-full-name "Linsen Zhou"168 user-mail-address "i@lin.moe"169 smtpmail-smtp-server "smtp.lin.moe"170 smtpmail-smtp-user "i@lin.moe"171 smtpmail-stream-type 'ssl172 smtpmail-smtp-service 465173 epg-pinentry-mode 'loopback)174 :config175 (setq mml-secure-openpgp-sign-with-sender t176 mml-secure-openpgp-encrypt-to-self t177 mml-secure-openpgp-signers '("7EB223B9B0D814B9")178 message-kill-buffer-on-exit 1179 gnus-agent nil))180181(use-package erc182 :init183 (defun run-erc ()184 (interactive)185 (erc-tls :server "chat.lin.moe"186 :port 6697187 :nick "lindsay"188 :user "lindsay/irc.oftc.net")189 (erc-tls :server "chat.lin.moe"190 :port 6697191 :nick "lindsay"192 :user "lindsay/irc.libera.chat")193 (erc-tls :server "chat.lin.moe"194 :port 6697195 :nick "lindsay"196 :user "lindsay/raye.mistivia.com"))197198 :bind (:map erc-mode-map199 ("RET" . nil)200 ("C-c C-c" . #'erc-send-current-line))201 :config202 (defun erc-mark-all-read ()203 (interactive)204 (setq erc-modified-channels-alist nil)205 (erc-modified-channels-display))206 (setq erc-server "irc.oftc.net"207 erc-user-full-name "Linsen Zhou"208 erc-nick "linsey"209 erc-autojoin-channels-alist '(("OFTC" "#alpine-zh" "#alpine-commits")))210 (setq erc-hide-list '("JOIN" "PART" "QUIT")211 erc-track-exclude-types '("JOIN" "MODE" "NICK" "PART" "QUIT"212 "324" "329" "332" "333" "353" "477")213 erc-track-exclude '("#alpine-commits" "#alpine-commit@OFTC"))214 (add-to-list 'erc-modules 'notifications)215 (add-to-list 'erc-modules 'spelling))216217(use-package vterm218 :config219 (setq220 vterm-shell "zsh"221 vterm-buffer-name-string "<vterm> %s")222223 (advice-add 'vterm--enter-copy-mode :after (lambda () (god-local-mode)))224 (advice-add 'vterm--exit-copy-mode :after (lambda () (god-local-mode -1)))225226 :bind227 (:map vterm-mode-map228 ("C-u" . vterm--self-insert)))229230(use-package multi-vterm231 :init232 (defun multi-vterm-at (location)233 (interactive234 (let* ((default-dir (file-truename default-directory))235 (args (find-file-read-args "Location: " default-dir)))236 (list (car args))))237 (let ((default-directory location)) (multi-vterm)))238 :bind239 ("C-c C-<return>" . multi-vterm-at))240241242(use-package flyspell243 :hook (text-mode . flyspell-mode)244 :config245 (setq-default ispell-program-name "aspell"))246247(use-package casual248 :ensure t249 :bind (:map dired-mode-map250 ("C-o" . #'casual-dired-tmenu)251 ("s" . #'casual-dired-sort-by-tmenu)252 ("/" . #'casual-dired-search-replace-tmenu)))253254(use-package dired-preview255 :bind (:map dired-mode-map256 ("M-," . dired-preview-mode)))257258(use-package shr-tag-pre-highlight259 :ensure t260 :after shr261 :config262 (add-to-list 'shr-external-rendering-functions263 '(pre . shr-tag-pre-highlight)))264265(use-package gnus266 :config267 (setq268 user-full-name '"Linsen Zhou"269 user-mail-address '"i@lin.moe"270 gnus-startup-file '"~/orgs/.newsrc"271 gnus-directory "~/.config/emacs/news/"272 message-directory "~/.config/emacs/mail/"273 nnfolder-directory "~/.config/emacs/mail/archive"274 gnus-always-read-dribble-file t275 gnus-select-method '(nntp "raye.mistivia.com"276 (nntp-open-connection-function nntp-open-tls-stream)277 (nntp-port-number 563)278 (nntp-address "raye.mistivia.com"))))279280(provide 'init-apps)281;;; init-apps.el ends here