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 :init22 (unless (fboundp 'member-if)23 (defalias 'member-if 'cl-member-if))24 (with-eval-after-load 'magit25 (git-email-magit-setup))26 :config27 (setenv "INFOPATH"28 (concat (file-name-directory (find-library-name "git-email"))29 ":" (getenv "INFOPATH")))30 (setq git-email-compose-email-function #'mu4e-compose-new)31 :bind (:map dired-mode-map32 ("M-." . #'git-email-send-email)))3334(use-package jabber35 :init36 :load-path "/usr/share/emacs/site-lisp/jabber"37 :bind (:map jabber-chat-mode-map38 ("RET" . nil)39 ("C-c C-c" . #'jabber-chat-buffer-send))40 :commands (jabber-connect jabber-connect-all)41 :config4243 (custom-set-faces44 '(jabber-activity-face ((t nil))))454647 (defun jabber-mark-all-read ()48 (interactive)49 (setq jabber-activity-jids nil)50 (jabber-activity-mode-line-update))5152 (defun my-jabber-activity-show (jid)53 (and (not (member jid54 '("#alpine-commits%irc.oftc.net@biboumi.koi.moe")))55 (jabber-activity-show-p-default jid)))56 (setq jabber-activity-show-p 'my-jabber-activity-show)5758 (require 'tls)59 (setq jabber-history-enabled t60 jabber-history-dir "~/orgs/.jabber-history"61 jabber-history-muc-enabled t62 jabber-muc-nick "lindsay"63 jabber-groupchat-buffer-format "jabber[g] - %b"64 jabber-chat-buffer-format "jabber[c] - %n"65 jabber-browse-buffer-format "jabber[b] - %n"66 jabber-muc-private-buffer-format "jabber[p] - %n[%g] "67 jabber-auto-reconnect t68 ;; jabber-muc-autojoin '("fscc_main@conference.conversations.im")69 ;; jabber-default-connection-type 'ssl ;; need gnutls-utils(cmd:gnutls-cli)70 jabber-account-list '(("lindsay@xmpp.jp" (:port . 5223) (:connection-type . ssl))71 ("lindsay@conversations.im" (:port . 5222) (:connection-type . starttls))72 ("lin@koi.moe" (:port . 5222) (:connection-type . starttls)))73 jabber-muc-decorate-presence-patterns '(("\\( enters the room ([^)]+)\\| has left the chatroom\\)$"))))7475;; 彩色括号76(use-package rainbow-delimiters77 :hook (prog-mode . rainbow-delimiters-mode))7879;; 翻译80(use-package gt81 :config82 (setq gt-default-translator83 (gt-translator84 :taker (gt-taker85 :langs '(en zh)86 :text 'word87 :prompt t)88 :engines (list (gt-bing-engine)89 (gt-google-engine))90 :render (gt-buffer-render)))91 :bind92 (("C-c t" . gt-translate)))93;; dired 插件94(use-package dired-subtree)95(use-package dired96 :ensure nil97 :init98 (require 'dired-x)99 (defun dired-view-file-other-window()100 "In Dired, view file or diretory in other buffer."101 (interactive)102 (let ((file (dired-get-file-for-visit)))103 (if (file-directory-p file)104 (or (and (cdr dired-subdir-alist)105 (dired-goto-subdir file))106 (dired-other-window file))107 (view-file-other-window file))))108 :hook109 (dired-mode . (lambda () (dired-omit-mode)))110 :config111 (setq dired-omit-files ;; hide .dot files when in dired-omit-mode112 (concat dired-omit-files "\\|^\\..+$"))113 :bind (:map dired-mode-map114 ("C->" . dired-omit-mode)115 ("q" . quit-window)116 ("TAB" . dired-subtree-toggle)117 ("V" . dired-view-file-other-window)))118119;; 邮件120;; 收件配置121(use-package mu4e122 :ensure nil123 :pin manual124 :load-path "/usr/share/emacs/site-lisp/mu4e"125 :bind (("C-x m" . mu4e-compose-new))126 :hook (mu4e-compose-mode . (lambda () (auto-save-mode -1)))127 :commands mu4e128 :config129130 (add-to-list 'display-buffer-alist131 `(,(regexp-quote mu4e-main-buffer-name)132 display-buffer-same-window))133134 (keymap-unset mu4e-search-minor-mode-map "M-<right>")135 (keymap-unset mu4e-search-minor-mode-map "M-<left>")136 (setf (plist-get (alist-get 'trash mu4e-marks) :action)137 (lambda (docid msg target)138 (mu4e--server-move docid (mu4e--mark-check-target target) "-N")))139 (require 'mu4e-notification)140 (setq mu4e-maildir "~/.mail")141 (setq mu4e-get-mail-command "mbsync -a -c ~/.config/mbsync/config"142 mu4e-update-interval 300)143 (setq user-mail-address "i@lin.moe"144 user-full-name "Linsen Zhou"145 mu4e-sent-folder "/Sent"146 mu4e-drafts-folder "/Drafts"147 mu4e-trash-folder "/Trash"148 mu4e-refile-folder "/Archive")149150 (setq mu4e-headers-thread-root-prefix '("* " . "□ ")151 mu4e-headers-thread-child-prefix '(" >" . "│ ")152 mu4e-headers-thread-first-child-prefix '(" >" . "⚬ ")153 mu4e-headers-thread-last-child-prefix '(" >" . "└ "))154 (setq mu4e-change-filenames-when-moving t155 mu4e-search-include-related t)156157 (setq mu4e-maildir-shortcuts '(( :name "Inbox"158 :key ?i159 :maildir "/Inbox")160 ( :name "Archive"161 :key ?a162 :maildir "/Archive")163 ( :name "Drafts"164 :key ?d165 :maildir "/Drafts")))166167 (setq mu4e-bookmarks '(( :name "Today's messages"168 :query "date:today..now AND NOT maildir:/Junk"169 :key ?t)170 ( :name "Flagged"171 :key ?f172 :query "flag:flagged")173174 ( :name "Mailing list"175 :query "flag:list AND NOT maildir:/Trash AND NOT maildir:/Junk NOT maildir:/Archive AND NOT flag:trashed"176 :key ?l)177178 ( :name "Business(Linakesi)"179 :key ?k180 :favorite t181 :query "contact:zhoulinsen@linakesi.com AND NOT maildir:/Trash NOT maildir:/Archive AND NOT flag:trashed")182183 ( :name "Unread messages"184 :query "flag:unread AND NOT maildir:/Trash AND NOT maildir:/Junk AND NOT flag:trashed"185 :key ?u))))186(use-package mu4e-alert187 :hook (after-init . mu4e-alert-enable-notifications)188 :config189 (setq mu4e-alert-interesting-mail-query190 (concat191 "flag:unread"192 " AND NOT flag:trashed"193 " AND NOT maildir:/Trash"194 " AND NOT maildir:/Junk")))195196;; 发件配置197(use-package smtpmail198 :init199 (add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime)200 (setq send-mail-function 'smtpmail-send-it201 user-full-name "Linsen Zhou"202 user-mail-address "i@lin.moe"203 smtpmail-smtp-server "smtp.lin.moe"204 smtpmail-smtp-user "i@lin.moe"205 smtpmail-stream-type 'ssl206 smtpmail-smtp-service 465207 epg-pinentry-mode 'loopback)208 :config209 (setq mml-secure-openpgp-sign-with-sender t210 mml-secure-openpgp-encrypt-to-self t211 mml-secure-openpgp-signers '("7EB223B9B0D814B9")212 message-kill-buffer-on-exit 1213 gnus-agent nil))214215(use-package erc216 :init217 (defun run-erc ()218 (interactive)219 (erc-tls :server "chat.lin.moe"220 :port 6697221 :nick "lindsay"222 :user "lindsay/irc.oftc.net")223 (erc-tls :server "chat.lin.moe"224 :port 6697225 :nick "lindsay"226 :user "lindsay/irc.libera.chat"))227228 :bind (:map erc-mode-map229 ("RET" . nil)230 ("C-c C-c" . #'erc-send-current-line))231 :config232 (defun erc-mark-all-read ()233 (interactive)234 (setq erc-modified-channels-alist nil)235 (erc-modified-channels-display))236 (setq erc-server "irc.oftc.net"237 erc-user-full-name "Linsen Zhou"238 erc-nick "linsey"239 erc-autojoin-channels-alist '(("OFTC" "#alpine-zh" "#alpine-commits")))240 (setq erc-hide-list '("JOIN" "PART" "QUIT")241 erc-track-exclude-types '("JOIN" "MODE" "NICK" "PART" "QUIT"242 "324" "329" "332" "333" "353" "477")243 erc-track-exclude '("#alpine-commits" "#alpine-commit@OFTC"))244 (add-to-list 'erc-modules 'notifications)245 (add-to-list 'erc-modules 'spelling))246247(use-package vterm248 :config249 (setq250 vterm-shell "zsh"251 vterm-buffer-name-string "<vterm> %s")252253 (advice-add 'vterm--enter-copy-mode :after (lambda () (god-local-mode)))254 (advice-add 'vterm--exit-copy-mode :after (lambda () (god-local-mode -1)))255256 :bind257 (:map vterm-mode-map258 ("C-u" . vterm--self-insert)))259260(use-package multi-vterm261 :init262 (defun multi-vterm-at (location)263 (interactive264 (let* ((default-dir (file-truename default-directory))265 (args (find-file-read-args "Location: " default-dir)))266 (list (car args))))267 (let ((default-directory location)) (multi-vterm)))268 :bind269 ("C-c C-<return>" . multi-vterm-at))270271272(use-package flyspell273 :hook (text-mode . flyspell-mode)274 :config275 (setq-default ispell-program-name "aspell"))276277(use-package casual278 :bind (:map dired-mode-map279 ("C-o" . #'casual-dired-tmenu)280 ("s" . #'casual-dired-sort-by-tmenu)281 ("/" . #'casual-dired-search-replace-tmenu)))282283(use-package dired-preview284 :bind (:map dired-mode-map285 ("M-," . dired-preview-mode)))286287(use-package shr-tag-pre-highlight288 :ensure t289 :after shr290 :config291 (add-to-list 'shr-external-rendering-functions292 '(pre . shr-tag-pre-highlight)))293294(use-package gnus295 :config296 (setq297 user-full-name '"Linsen Zhou"298 user-mail-address '"i@lin.moe"299 gnus-startup-file '"~/orgs/.newsrc"300 gnus-directory "~/.config/emacs/news/"301 message-directory "~/.config/emacs/mail/"302 nnfolder-directory "~/.config/emacs/mail/archive"303 gnus-always-read-dribble-file t304 gnus-select-method '(nntp "raye.mistivia.com"305 (nntp-open-connection-function nntp-open-tls-stream)306 (nntp-port-number 563)307 (nntp-address "raye.mistivia.com"))))308309(use-package empv310 :bind-keymap ("C-c m" . empv-map))311312(provide 'init-apps)313;;; init-apps.el ends here