doomemacs/docs/api.org
Henrik Lissner d55f284386
Refactor file-exists-p macro
And refactor too doom--resolve-path-forms
2019-07-23 20:43:24 +02:00

2 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! '(one-mode-hook second-mode-hook) 'enable-something)
(add-hook! (one-mode second-mode) 'enable-something)

;; Appending and local hooks
(add-hook! :append (one-mode second-mode) 'enable-something)
(add-hook! :local (one-mode second-mode) 'enable-something)

;; With arbitrary forms
(add-hook! (one-mode second-mode) (setq v 5) (setq a 2))
(add-hook! :append :local (one-mode second-mode) (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 ()
    ...))

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! '(one-mode-hook second-mode-hook) 'enable-something)
(remove-hook! (one-mode second-mode) 'enable-something)

;; Appending and local hooks
(remove-hook! :append (one-mode second-mode) 'enable-something)
(remove-hook! :local (one-mode second-mode) 'enable-something)

;; With arbitrary forms
(remove-hook! (one-mode second-mode) (setq v 5) (setq a 2))