最近一直跟随大佬们在 Emacs 里用 telega,也逐渐开始喜欢在 emacs 里集中做事的方式。我用的是 doom-emacs,跟其它的 emacs 配置版本有些不同。一是像 spacemacs 一样,doom-emacs 也是全局使用 evil 包,这样对于类似我这样的 vim 党比较容易适应;二是 doom-emacs 里进行了比较深的封装,导致有些个性化配置不能生效。比如我想在 telega 里使用 telega-company-emoji 包进行表情补全,却发现按照官网的示例无论如何都不能生效,最后发现还是 doom-emacs 对 company-backends 的特殊处理造成的。因此对配置进行了一些修改,总算能正常使用了,现在贴出最终配置(11 月 21 日更新,注意在 packages.el 里加上 telega 包):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
;; telegram client for emacs
(use-package! telega
  :commands (telega)
  :defer t
  :bind ("C-c t" . #'telega)
  :init
  (unless (display-graphic-p) (setq telega-use-images nil))
  :hook
  ('telega-root-mode . #'evil-emacs-state)
  ('telega-chat-mode . #'evil-emacs-state)
  ('telega-chat-mode . #'yas-minor-mode)
  ('telega-chat-mode . (lambda ()
                         (set-company-backend! 'telega-chat-mode
                           (append '(telega-company-emoji
                                     telega-company-username
                                     telega-company-hashtag)
                                   (when (telega-chat-bot-p telega-chatbuf--chat)
                                     '(telega-company-botcmd))))
                         (company-mode 1)))
  ('telega-chat-pre-message . #'telega-msg-ignore-blocked-sender)
  :config
  (setq telega-proxies
        (list '(:server "127.0.0.1" :port 1086 :enable t
                        :type (:@type "proxyTypeSocks5"))))
  (set-popup-rule! "^\\*Telega Root"
    :side 'right :size 100 :quit nil :modeline t)
  (set-popup-rule! "^◀\\(\\[\\|<\\|{\\).*\\(\\]\\|>\\|}\\)"
    :side 'right :size 100 :quit nil :modeline t)
  (telega-mode-line-mode 1))