doomemacs/docs/api.org
2019-07-29 18:56:49 +02:00

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 `remove-hook'. In
;; that case, use that instead.
(remove-hook! 'some-mode-hook #'enable-something)

;; Removing N functions from M 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)

;; Removing buffer-local hooks
(remove-hook! (one-mode second-mode) :local #'enable-something)

;; Removing arbitrary forms (must be exactly the same as the definition)
(remove-hook! (one-mode second-mode) (setq v 5) (setq a 2))