@@ -2220,21 +2220,122 @@ c-c n l (org-roam-buffer-toggle)
22202220*** 已有的 headline 转换为一个节点
22212221org-id-get-create
22222222refile node
2223- ** Org roam UI and Org roam server
2224- ** 安装 Rime
2223+ ** 直接从 github 安装插件
2224+ #+begin_src emacs-lisp
2225+ (require 'cl-lib)
2226+ (require 'use-package-core)
2227+
2228+ (cl-defun slot/vc-install (&key (fetcher "github") repo name rev backend)
2229+ (let* ((url (format "https://www.%s.com/%s" fetcher repo))
2230+ (iname (when name (intern name)))
2231+ (package-name (or iname (intern (file-name-base repo)))))
2232+ (unless (package-installed-p package-name)
2233+ (package-vc-install url iname rev backend))))
2234+
2235+ (defvar package-vc-use-package-keyword :vc)
2236+
2237+ (defun package-vc-use-package-set-keyword ()
2238+ (unless (member package-vc-use-package-keyword use-package-keywords)
2239+ (setq use-package-keywords
2240+ (let* ((pos (cl-position :unless use-package-keywords))
2241+ (head (cl-subseq use-package-keywords 0 (+ 1 pos)))
2242+ (tail (nthcdr (+ 1 pos) use-package-keywords)))
2243+ (append head (list package-vc-use-package-keyword) tail)))))
2244+
2245+ (defun use-package-normalize/:vc (name-symbol keyword args)
2246+ (let ((arg (car args)))
2247+ (pcase arg
2248+ ((or `nil `t) (list name-symbol))
2249+ ((pred symbolp) args)
2250+ ((pred listp) (cond
2251+ ((listp (car arg)) arg)
2252+ ((string-match "^:" (symbol-name (car arg))) (cons name-symbol arg))
2253+ ((symbolp (car arg)) args)))
2254+ (_ nil))))
2255+
2256+ (defun use-package-handler/:vc (name-symbol keyword args rest state)
2257+ (let ((body (use-package-process-keywords name-symbol rest state)))
2258+ ;; This happens at macro expansion time, not when the expanded code is
2259+ ;; compiled or evaluated.
2260+ (if args
2261+ (use-package-concat
2262+ `((unless (package-installed-p ',(pcase (car args)
2263+ ((pred symbolp) (car args))
2264+ ((pred listp) (car (car args)))))
2265+ (apply #'slot/vc-install ',(cdr args))))
2266+ body)
2267+ body)))
2268+
2269+ (defun package-vc-use-package-override-:ensure (func name-symbol keyword ensure rest state)
2270+ (let ((ensure (if (plist-member rest :vc)
2271+ nil
2272+ ensure)))
2273+ (funcall func name-symbol keyword ensure rest state)))
2274+
2275+ (defun package-vc-use-package-activate-advice ()
2276+ (advice-add
2277+ 'use-package-handler/:ensure
2278+ :around
2279+ #'package-vc-use-package-override-:ensure))
2280+
2281+ (defun package-vc-use-package-deactivate-advice ()
2282+ (advice-remove
2283+ 'use-package-handler/:ensure
2284+ #'package-vc-use-package-override-:ensure))
2285+
2286+ ;; register keyword on require
2287+ (package-vc-use-package-set-keyword)
2288+ #+end_src
2289+ ** Org roam UI
2290+ #+begin_src emacs-lisp
2291+ (use-package org-roam-ui
2292+ :vc (:fetcher "github" :repo "org-roam/org-roam-ui"))
2293+ #+end_src
2294+ - 鼠标操作
2295+ - 可视化
2296+ - 实时显示链接
22252297
22262298
22272299* 第二十天:Emacs 配置问题排查
2300+ ** 配置有问题,启动不了怎么办?
2301+ emacs-debug --init
22282302** 不能安装包,提示签名错误
22292303Failed to verify signature archive-contents.sig
22302304
22312305#+begin_src emacs-lisp
2232- (let ((package-check-signature nil))
2233- (package-install 'gnu-elpa-keyring-update))
2306+ (setq package-check-signature nil)
22342307#+end_src
22352308
22362309 [[https://emacs-china.org/t/failed-to-verify-signature-archive-contents-sig/20508/5][Failed to verify signature archive-contents.sig - Emacs-general - Emacs China]]
2237- ** 配置有问题,启动不了怎么办?
2238- ** 依赖不对怎么办?
2310+ ** a pax extended header, 包解压失败,可以使用 use-package :vc 直接安装
2311+ 使用 mysys2 的时候,系统会使用 unix 的 tar 去解压会有问题
2312+ windows 上面需要使用 system32/tar 这个程序去解压。
2313+ #+begin_src emacs-lisp
2314+ 解决办法可以是 mv /usr/bin/tar /usr/bin/tarbak
2315+ #+end_src
2316+ ** 上 Emacs China! 上 Emacs China! 上 Emacs China! (重要的事情说 3 遍)
22392317
22402318* 第二十一天: 优化性能,借鉴其他人的配置
2319+ ** how to Profile performace
2320+ ** 怎么度量启动性能
2321+ #+begin_src emacs-lisp
2322+ (use-package benchmark-init
2323+ :ensure t
2324+ :demand t
2325+ :config
2326+ ;; To disable collection of benchmark data after init is done.
2327+ (add-hook 'after-init-hook 'benchmark-init/deactivate))
2328+ #+end_src
2329+ ** use-package 哪些操作可以优化性能
2330+ https://systemcrafters.net/emacs-from-scratch/cut-start-up-time-in-half/
2331+ ** 借鉴大佬的配置,作为框架
2332+ *** 社区配置
2333+ Spacemacs & DoomEmacs
2334+
2335+ *** 个人配置
2336+ - https://github.com/purcell/emacs.d
2337+ - https://github.com/bbatsov/prelude
2338+ - https://github.com/bbatsov/prelude
2339+ - https://github.com/seagle0128/.emacs.d
2340+ - https://github.com/zilongshanren/emacs.d (子龙山人)
2341+
0 commit comments