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 (with-eval-after-load 'magit23 (git-email-magit-setup))24 :config25 (setenv "INFOPATH"26 (concat (file-name-directory (find-library-name "git-email"))27 ":" (getenv "INFOPATH")))28 (setq git-email-compose-email-function #'mu4e-compose-new)29 :bind (:map dired-mode-map30 ("M-." . #'git-email-send-email)))3132(use-package jabber33 :init34 :load-path "/usr/share/emacs/site-lisp/jabber"35 :bind (:map jabber-chat-mode-map36 ("RET" . nil)37 ("C-c C-c" . #'jabber-chat-buffer-send))38 :commands (jabber-connect jabber-connect-all)39 :config4041 (custom-set-faces42 '(jabber-activity-face ((t nil))))434445 (defun jabber-mark-all-read ()46 (interactive)47 (setq jabber-activity-jids nil)48 (jabber-activity-mode-line-update))4950 (defun my-jabber-activity-show (jid)51 (and (not (member jid52 '("#alpine-commits%irc.oftc.net@biboumi.koi.moe")))53 (jabber-activity-show-p-default jid)))54 (setq jabber-activity-show-p 'my-jabber-activity-show)5556 (require 'tls)57 (setq jabber-history-enabled t58 jabber-history-dir "~/orgs/.jabber-history"59 jabber-history-muc-enabled t60 jabber-muc-nick "lindsay"61 jabber-groupchat-buffer-format "jabber[g] - %b"62 jabber-chat-buffer-format "jabber[c] - %n"63 jabber-browse-buffer-format "jabber[b] - %n"64 jabber-muc-private-buffer-format "jabber[p] - %n[%g] "65 jabber-auto-reconnect t66 ;; jabber-muc-autojoin '("fscc_main@conference.conversations.im")67 ;; jabber-default-connection-type 'ssl ;; need gnutls-utils(cmd:gnutls-cli)68 jabber-account-list '(("lindsay@xmpp.jp" (:port . 5223) (:connection-type . ssl))69 ("lindsay@conversations.im" (:port . 5222) (:connection-type . starttls))70 ("lin@koi.moe" (:port . 5222) (:connection-type . starttls)))71 jabber-muc-decorate-presence-patterns '(("\\( enters the room ([^)]+)\\| has left the chatroom\\)$"))))7273;; 彩色括号74(use-package rainbow-delimiters75 :hook (prog-mode . rainbow-delimiters-mode))7677;; 翻译78(use-package gt79 :config80 (setq gt-default-translator81 (gt-translator82 :taker (gt-taker83 :langs '(en zh)84 :text 'word85 :prompt t)86 :engines (list (gt-bing-engine)87 (gt-google-engine))88 :render (gt-buffer-render)))89 :bind90 (("C-c t" . gt-translate)))91;; dired 插件92(use-package dired-subtree)93(use-package dired94 :ensure nil95 :init96 (require 'dired-x)97 (defun dired-view-file-other-window()98 "In Dired, view file or diretory in other buffer."99 (interactive)100 (let ((file (dired-get-file-for-visit)))101 (if (file-directory-p file)102 (or (and (cdr dired-subdir-alist)103 (dired-goto-subdir file))104 (dired-other-window file))105 (view-file-other-window file))))106 :hook107 (dired-mode . (lambda () (dired-omit-mode)))108 :config109 (setq dired-omit-files ;; hide .dot files when in dired-omit-mode110 (concat dired-omit-files "\\|^\\..+$"))111 :bind (:map dired-mode-map112 ("C->" . dired-omit-mode)113 ("q" . quit-window)114 ("TAB" . dired-subtree-toggle)115 ("V" . dired-view-file-other-window)))116117;; 邮件118;; 收件配置119(use-package mu4e120 :ensure nil121 :pin manual122 :load-path "/usr/share/emacs/site-lisp/mu4e"123 :bind (("C-x m" . mu4e-compose-new))124 :hook (mu4e-compose-mode . (lambda () (auto-save-mode -1)))125 :commands mu4e126 :config127128 (add-to-list 'display-buffer-alist129 `(,(regexp-quote mu4e-main-buffer-name)130 display-buffer-same-window))131132 (keymap-unset mu4e-search-minor-mode-map "M-<right>")133 (keymap-unset mu4e-search-minor-mode-map "M-<left>")134 (setf (plist-get (alist-get 'trash mu4e-marks) :action)135 (lambda (docid msg target)136 (mu4e--server-move docid (mu4e--mark-check-target target) "-N")))137 (require 'mu4e-notification)138 (setq mu4e-maildir "~/.mail")139 (setq mu4e-get-mail-command "mbsync -a -c ~/.config/mbsync/config"140 mu4e-update-interval 300)141 (setq user-mail-address "i@lin.moe"142 user-full-name "Linsen Zhou"143 mu4e-sent-folder "/Sent"144 mu4e-drafts-folder "/Drafts"145 mu4e-trash-folder "/Trash"146 mu4e-refile-folder "/Archive")147148 (setq mu4e-headers-thread-root-prefix '("* " . "□ ")149 mu4e-headers-thread-child-prefix '(" >" . "│ ")150 mu4e-headers-thread-first-child-prefix '(" >" . "⚬ ")151 mu4e-headers-thread-last-child-prefix '(" >" . "└ "))152 (setq mu4e-change-filenames-when-moving t153 mu4e-search-include-related t)154155 (setq mu4e-maildir-shortcuts '(( :name "Inbox"156 :key ?i157 :maildir "/Inbox")158 ( :name "Archive"159 :key ?a160 :maildir "/Archive")161 ( :name "Drafts"162 :key ?d163 :maildir "/Drafts")))164165 (setq mu4e-bookmarks '(( :name "Today's messages"166 :query "date:today..now"167 :key ?t)168 ( :name "Flagged"169 :key ?f170 :query "flag:flagged")171172 ( :name "Mailing list"173 :query "flag:list AND NOT maildir:/Trash NOT maildir:/Archive AND NOT flag:trashed"174 :key ?l)175176 ( :name "Business(Linakesi)"177 :key ?k178 :favorite t179 :query "contact:zhoulinsen@linakesi.com AND NOT maildir:/Trash NOT maildir:/Archive AND NOT flag:trashed")180181 ( :name "Unread messages"182 :query "flag:unread AND NOT maildir:/Trash AND NOT maildir:/Junk AND NOT flag:trashed"183 :key ?u))))184(use-package mu4e-alert185 :hook (after-init . mu4e-alert-enable-notifications)186 :config187 (setq mu4e-alert-interesting-mail-query188 (concat189 "flag:unread"190 " AND NOT flag:trashed"191 " AND NOT maildir:/Trash"192 " AND NOT maildir:/Junk")))193194;; 发件配置195(use-package smtpmail196 :init197 (add-hook 'message-send-hook 'mml-secure-message-sign-pgpmime)198 (setq send-mail-function 'smtpmail-send-it199 user-full-name "Linsen Zhou"200 user-mail-address "i@lin.moe"201 smtpmail-smtp-server "smtp.lin.moe"202 smtpmail-smtp-user "i@lin.moe"203 smtpmail-stream-type 'ssl204 smtpmail-smtp-service 465205 epg-pinentry-mode 'loopback)206 :config207 (setq mml-secure-openpgp-sign-with-sender t208 mml-secure-openpgp-encrypt-to-self t209 mml-secure-openpgp-signers '("7EB223B9B0D814B9")210 message-kill-buffer-on-exit 1211 gnus-agent nil))212213(use-package erc214 :init215 (defun run-erc ()216 (interactive)217 (erc-tls :server "chat.lin.moe"218 :port 6697219 :nick "lindsay"220 :user "lindsay/irc.oftc.net")221 (erc-tls :server "chat.lin.moe"222 :port 6697223 :nick "lindsay"224 :user "lindsay/irc.libera.chat"))225226 :bind (:map erc-mode-map227 ("RET" . nil)228 ("C-c C-c" . #'erc-send-current-line))229 :config230 (defun erc-mark-all-read ()231 (interactive)232 (setq erc-modified-channels-alist nil)233 (erc-modified-channels-display))234 (setq erc-server "irc.oftc.net"235 erc-user-full-name "Linsen Zhou"236 erc-nick "linsey"237 erc-autojoin-channels-alist '(("OFTC" "#alpine-zh" "#alpine-commits")))238 (setq erc-hide-list '("JOIN" "PART" "QUIT")239 erc-track-exclude-types '("JOIN" "MODE" "NICK" "PART" "QUIT"240 "324" "329" "332" "333" "353" "477")241 erc-track-exclude '("#alpine-commits" "#alpine-commit@OFTC"))242 (add-to-list 'erc-modules 'notifications)243 (add-to-list 'erc-modules 'spelling))244245(use-package vterm246 :config247 (setq248 vterm-shell "zsh"249 vterm-buffer-name-string "<vterm> %s")250251 (advice-add 'vterm--enter-copy-mode :after (lambda () (god-local-mode)))252 (advice-add 'vterm--exit-copy-mode :after (lambda () (god-local-mode -1)))253254 :bind255 (:map vterm-mode-map256 ("C-u" . vterm--self-insert)))257258(use-package multi-vterm259 :init260 (defun multi-vterm-at (location)261 (interactive262 (let* ((default-dir (file-truename default-directory))263 (args (find-file-read-args "Location: " default-dir)))264 (list (car args))))265 (let ((default-directory location)) (multi-vterm)))266 :bind267 ("C-c C-<return>" . multi-vterm-at))268269270(use-package flyspell271 :hook (text-mode . flyspell-mode)272 :config273 (setq-default ispell-program-name "aspell"))274275(use-package casual276 :bind (:map dired-mode-map277 ("C-o" . #'casual-dired-tmenu)278 ("s" . #'casual-dired-sort-by-tmenu)279 ("/" . #'casual-dired-search-replace-tmenu)))280281(use-package dired-preview282 :bind (:map dired-mode-map283 ("M-," . dired-preview-mode)))284285(use-package shr-tag-pre-highlight286 :ensure t287 :after shr288 :config289 (add-to-list 'shr-external-rendering-functions290 '(pre . shr-tag-pre-highlight)))291292(use-package gnus293 :config294 (setq295 user-full-name '"Linsen Zhou"296 user-mail-address '"i@lin.moe"297 gnus-startup-file '"~/orgs/.newsrc"298 gnus-directory "~/.config/emacs/news/"299 message-directory "~/.config/emacs/mail/"300 nnfolder-directory "~/.config/emacs/mail/archive"301 gnus-always-read-dribble-file t302 gnus-select-method '(nntp "raye.mistivia.com"303 (nntp-open-connection-function nntp-open-tls-stream)304 (nntp-port-number 563)305 (nntp-address "raye.mistivia.com"))))306307(provide 'init-apps)308;;; init-apps.el ends here