请问doom emacs的这段代码里的add-hook!应该如何展开呢?我找不到他定义add-hook!的宏,直接在自己的init file里用add-hook!的话会报警。
(defvar last-file-name-handler-alist file-name-handler-alist)
(setq gc-cons-threshold 402653184
gc-cons-percentage 0.6
file-name-handler-alist nil)
;; ... your whole emacs config here ...
;; after startup, it is important you reset this to some reasonable default. A large
;; gc-cons-threshold will cause freezing and stuttering during long-term
;; interactive use. I find these are nice defaults:
(add-hook! 'emacs-startup-hook
(setq gc-cons-threshold 16777216
gc-cons-percentage 0.1
file-name-handler-alist last-file-name-handler-alist))
(add-hook 'emacs-startup-hook
(lambda ()
(setq gc-cons-threshold 16777216
gc-cons-percentage 0.1
file-name-handler-alist last-file-name-handler-alist)))
1 个赞
不敢当。另外你也可以查看 emacs-startup-hook
的值来了解最后加的是什么。
!后缀是scheme的惯例,通常是指由!修饰的函数有副作用, 诸如set!。还有1个在scheme中比较常见的的后缀是?, 类似于common lisp或者elisp的p后缀, 诸如characterp, stringp
By convention, the names of procedures that always return a boolean value usually end in ``?‘’. Such procedures are called predicates.
By convention, the names of procedures that store values into previously allocated locations (see section 3.4) usually end in ``!‘’. Such procedures are called mutation procedures. By convention, the value returned by a mutation procedure is unspecified.
By convention, ``->‘’ appears within the names of procedures that take an object of one type and return an analogous object of another type. For example, list->vector takes a list and returns a vector whose elements are the same as those of the list.
2 个赞