221203
目录
1. 配置emacs
1.1. 配置 evil 插入模式快捷键
参照论坛大佬配置: 参考链接: evil 键绑定调整
(defun maple/define-key (keymap key def &rest bindings) "Define multi keybind with KEYMAP KEY DEF BINDINGS." (interactive) (while key (define-key keymap key def) (setq key (pop bindings) def (pop bindings)))) (maple/define-key evil-insert-state-map (kbd "M-h") (kbd "<left>") (kbd "M-l") (kbd "<right>") (kbd "M-j") (kbd "<down>") (kbd "M-k") (kbd "<up>"))
为了与 vim 一致使用上述绑定.
同时因为pyim 绑定与 M-j
冲突已经换为 M-'
1.2. 配置 erc 使用
经过多次的粗心大意 终于按照 官方方案 成功连到irc 但是好像不能正常查看消息 是我太浮躁了
根据官网的教程 erc-sasl
下载文件并在 init-local.el
加入以下内容:
;;; 配置 erc (require 'erc-backend) (require 'erc-sasl) (add-to-list 'erc-sasl-server-regexp-list "irc\\.libera\\.chat") (with-eval-after-load 'erc (defun erc-login () "Perform user authentication at the IRC server. (PATCHED)" (erc-log (format "login: nick: %s, user: %s %s %s :%s" (erc-current-nick) (user-login-name) (or erc-system-name (system-name)) erc-session-server erc-session-user-full-name)) (if erc-session-password (erc-server-send (format "PASS %s" erc-session-password)) (message "Logging in without password")) (when (and (featurep 'erc-sasl) (erc-sasl-use-sasl-p)) (erc-server-send "CAP REQ :sasl")) (erc-server-send (format "NICK %s" (erc-current-nick))) (erc-server-send (format "USER %s %s %s :%s" ;; hacked - S.B. (if erc-anonymous-login erc-email-userid (user-login-name)) "0" "*" erc-session-user-full-name)) (erc-update-mode-line)) ) (setq erc-autojoin-channels-alist '((Libera.Chat "#libera" "#list" "#linux" "$emacs"))) ;; (erc-tls :server "irc.libera.chat" :port 6697 :nick "xiliuya" ;; :full-name "xiliuya" ;; :password "")
1.3. 配置 org-roam 关联笔记
相关链接: org-roam 配置
经过翻阅官方的文档进行以下配置, 加入 init-local.el
:
(require-package 'org-roam) (require-package 'org-roam-server) (global-set-key (kbd "C-c n l") 'org-roam-buffer-toggle) (global-set-key (kbd "C-c n g") 'org-roam-graph) (global-set-key (kbd "C-c n i") 'org-roam-node-insert) (global-set-key (kbd "C-c n c") 'org-roam-capture) (global-set-key (kbd "C-c n j") 'org-roam-dailies-capture-today) (global-set-key (kbd "C-c n d") 'org-id-get-create) (setq org-roam-directory "~/myday") (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag))) (org-roam-db-autosync-mode) ;; If using org-roam-protocol (require 'org-roam-protocol) (setq find-file-visit-truename t) (setq org-roam-ui-sync-theme t org-roam-ui-follow t org-roam-ui-update-on-save t org-roam-ui-open-on-start t)
1.3.1. 基本使用
通过 M-x org-id-get-create
给现有的小标题生成一个 node id.
通过 M-x org-roam-db-sync
刷新数据库.
通过 M-x org-roam-ui-mode
启动一个本地服务器, 并打开一个浏览器窗口.
1.3.2. 功能理解
一款酷炫的插件, 可以简单而美观的管理众多的笔记.
基于 org-mode
简化新建日志的步骤.
便于梳理笔记形成可视化图像.
极大简化了查找笔记的时间成本.
易于翻阅加深记忆.
1.4. 配置 espeak 朗读
1.4.1. 修改配置
在 init-local.el 加入如下配置:
;;; 配置修复 espeak 使用时出现的白屏 (with-eval-after-load 'sdcv (defun sdcv-search-simple (&optional word) "search word simple translate result." (funcall sdcv-popup-function (sdcv-filter (shell-command-to-string (mapconcat #'identity (cons "sdcv" (sdcv-search-with-dictionary-args (or word (sdcv-region-or-word)) sdcv-dictionary-simple-list)) " ")))) ;; pronounce the word (add by me) (when sdcv-word-pronounce ;; `sleep-for', `sit-for'. (sit-for 0.8) (sdcv-pronounce-word word) ) ) )
调试的代码:
;; 下方是调试信息 不加入配置 ;; (setq sdcv-word-pronounce 'nil) ;; (setq sdcv-word-pronounce 't) ;; (defun sdcv-search-pointer+ () ;; "translate current point word. ;; and show information use tooltip. ;; but this function use a simple dictionary list." ;; (interactive) ;; (let ((word (sdcv-region-or-word))) ;; ;; display simple translate result. ;; (sdcv-search-simple word) ;; (sit-for 1) ;; (sdcv-pronounce-word word) ;; ))
1.4.2. 实际分析
由于 sleep-for
函数的未知原因导致, 使用 sit-for
可以解决
建议多看一些备注信息, 有时可以快速排查问题
1.5. org-mode 表格的创建
参考链接: 表格的基本操作
表格里有很多有趣的内容, 当前仅了解必要的几个键位, 真正用时再去折腾
手动生成表格 | xx|xx|bb| <TAB>
xx | xx | bb |
---|---|---|
从已有数据转换 C-c |
h,b,c,d 8,9,10 13,8,9
h | b | c | d |
---|---|---|---|
8 | 9 | 10 | |
13 | 8 | 9 |
转换后自动添加水平分隔线 C-c -
可以在光标的下一行插入
1.6. emacslisp 调试
通过在函数定义处使用 m-x edebug-defun
进入 edebug 模式 .
未深入去研究, 只做简单记录.
参考链接: 如何调试elisp .
1.7. 优化 emacs 启动时间
1.7.1. 查看 benchmarking
信息
通过 M-x sanityinc/require-time
查看启动时间详情
1.7.2. 问题
问题主要在 org-mode
暂时没有较好的解决方案
按照时间排序输出如下:
start_time | Feature | Time |
---|---|---|
83036.907 | ol-gnus | 2618.484 |
83079.567 | gnus-sum | 2073.966 |
83354.692 | gnus-group | 1536.641 |
83401.804 | gnus-start | 1443.971 |
2241.952 | init-local | 1282.597 |
83490.073 | gnus-int | 910.991 |
83533.981 | message | 822.331 |
1.7.3. 优化
init-elpa
修改镜像源配置内容:
(with-eval-after-load 'init-elpa ...) ;;; 配置源在 init-elpa 加载后覆盖