This update may potentially break your usage of add-hook! if you pass the :local or :append properties to it. This is how they used to work: (add-hook! :append 'some-mode-hook #'do-something) Thsoe properties must now follow the hooks, e.g. (add-hook! 'some-mode-hook :append #'do-something) Other changes: - Various add-hook calls have been renamed to add-hook! because I incorrectly assumed `defun` always returned its definition's symbol, when in fact, its return value is "undefined" (so sayeth the documentation). This should fix #1597. - This update adds the ability to add multiple functions to hooks without a list: (add-hook! 'some-mode-hook #'do-something #'do-something-else) - The indentation logic has been changed so that consecutive function symbols at indented at the same level as the first argument, but forms are indent like a defun. (add-hook! 'some-mode-hook #'do-something #'do-something-else) (add-hook! 'some-mode-hook (message "Hello"))
4.1 KiB
4.1 KiB
API Demos
This appendix serves as a reference on how to use Doom Emacs' standard library. It is integrated into Helpful, in Doom.
add-hook!
;; With only one hook and one function, this is identical to `add-hook'. In that
;; case, use that instead.
(add-hook! 'some-mode-hook #'enable-something)
;; Adding many-to-many functions to hooks
(add-hook! some-mode #'enable-something #'and-another)
(add-hook! some-mode #'(enable-something and-another))
(add-hook! '(one-mode-hook second-mode-hook) #'enable-something)
(add-hook! (one-mode second-mode) #'enable-something)
;; Appending and local hooks
(add-hook! (one-mode second-mode) :append #'enable-something)
(add-hook! (one-mode second-mode) :local #'enable-something)
;; With arbitrary forms
(add-hook! (one-mode second-mode) (setq v 5) (setq a 2))
(add-hook! (one-mode second-mode) :append :local (setq v 5) (setq a 2))
;; Inline named hook functions
(add-hook! '(one-mode-hook second-mode-hook)
(defun do-something ()
...)
(defun do-another-thing ()
...))
custom-theme-set-faces!
(custom-theme-set-faces! 'doom-one-theme
`(outline-1 :weight normal)
`(outline-2 :weight normal)
`(outline-3 :weight normal)
`(outline-4 :weight normal)
`(outline-5 :weight normal)
`(outline-6 :weight normal)
`(default :background "red" :weight bold)
`(region :background "red" :weight bold)`)
(custom-theme-set-faces! '(doom-one-theme doom-one-light-theme)
`((outline-1 outline-2 outline-3 outline-4 outline-5 outline-6)
:weight normal)
`((default region)
:background "red" :weight bold))
(let ((red-bg-faces '(default region)))
(custom-theme-set-faces! '(doom-one-theme doom-one-light-theme)
`(,(cl-loop for i from 0 to 6 collect (intern (format "outline-%d" i)))
:weight normal)
`(,red-bg-faces
:background "red" :weight bold)))
custom-set-faces!
(custom-set-faces!
`(outline-1 :weight normal)
`(outline-2 :weight normal)
`(outline-3 :weight normal)
`(outline-4 :weight normal)
`(outline-5 :weight normal)
`(outline-6 :weight normal)
`(default :background "red" :weight bold)
`(region :background "red" :weight bold)`)
(custom-set-faces!
`((outline-1 outline-2 outline-3 outline-4 outline-5 outline-6)
:weight normal)
`((default region)
:background "red" :weight bold))
(let ((red-bg-faces '(default region)))
(custom-set-faces!
`(,(cl-loop for i from 0 to 6 collect (intern (format "outline-%d" i)))
:weight normal)
`(,red-bg-faces
:background "red" :weight bold)))
doom!
(doom! :completion
company
ivy
;;helm
:tools
(:if IS-MAC macos)
docker
lsp
:lang
(cc +lsp)
(:cond ((string= system-name "work-pc")
python
rust
web)
((string= system-name "writing-pc")
(org +dragndrop)
ruby))
(:if IS-LINUX
(web +lsp)
web)
:config
literate
(default +bindings +smartparens))
file-exists-p!
(file-exists-p! "init.el" doom-emacs-dir)
/home/hlissner/.emacs.d/init.el
(file-exists-p! (and (or "doesnotexist" "init.el")
"LICENSE")
doom-emacs-dir)
/home/hlissner/.emacs.d/LICENSE
remove-hook!
;; With only one hook and one function, this is identical to `add-hook'. In that
;; case, use that instead.
(remove-hook! 'some-mode-hook #'enable-something)
;; Adding many-to-many functions to hooks
(remove-hook! some-mode #'enable-something #'and-another)
(remove-hook! some-mode #'(enable-something and-another))
(remove-hook! '(one-mode-hook second-mode-hook) #'enable-something)
(remove-hook! (one-mode second-mode) #'enable-something)
;; Appending and local hooks
(remove-hook! (one-mode second-mode) :append #'enable-something)
(remove-hook! (one-mode second-mode) :local #'enable-something)
;; With arbitrary forms
(remove-hook! (one-mode second-mode) (setq v 5) (setq a 2))