dotfiles/.doom.d/config.el
2023-08-20 20:46:28 -07:00

133 lines
4.9 KiB
EmacsLisp

;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
;; Place your private configuration here! Remember, you do not need to run 'doom
;; sync' after modifying this file!
;; Some functionality uses this to identify you, e.g. GPG configuration, email
;; clients, file templates and snippets.
(setq user-full-name "John Doe"
user-mail-address "john@doe.com")
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
;; are the three important ones:
;;
;; + `doom-font'
;; + `doom-variable-pitch-font'
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
;; presentations or streaming.
;;
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
;; font string. You generally only need these two:
;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light)
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
;(setq doom-theme 'doom-one)
(setq doom-theme 'doom-nord)
(setq doom-font (font-spec :family "LiterationMono Nerd Font" :size 14))
;; If you use `org' and don't want your org files in the default location below,
;; change `org-directory'. It must be set before org loads!
(setq org-directory "~/org/")
;; This determines the style of line numbers in effect. If set to `nil', line
;; numbers are disabled. For relative line numbers, set this to `relative'.
(setq display-line-numbers-type t)
;; Here are some additional functions/macros that could help you configure Doom:
;;
;; - `load!' for loading external *.el files relative to this one
;; - `use-package!' for configuring packages
;; - `after!' for running code after a package has loaded
;; - `add-load-path!' for adding directories to the `load-path', relative to
;; this file. Emacs searches the `load-path' when you load packages with
;; `require' or `use-package'.
;; - `map!' for binding new keys
;;
;; To get information about any of these functions/macros, move the cursor over
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
;; This will open documentation for it, including demos of how they are used.
;;
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
;; they are implemented.
(use-package! puppet-mode
:mode "\\.pp\\'")
(setq doom-leader-key ",")
(setq doom-leader-alt-key "M-,")
(setq doom-localleader-key ", m")
(setq doom-localleader-alt-key "M-, m")
(setq org-todo-keywords '((sequence "SWEEP(s)" "TODO(t)" "|" "DONE(d)")
(sequence "[ ](T)" "[-](p)" "[?](m)" "|" "[X](D)")
(sequence "NEXT(n)" "WAITING(w)" "LATER(l)" "|" "CANCELLED(c)")))
(map! :n "SPC" #'evil-ex
:gin "C-u" #'universal-argument
:n "C-h" #'evil-window-left
:n "C-j" #'evil-window-down
:n "C-k" #'evil-window-up
:n "C-l" #'evil-window-right
:n "-" #'flycheck-next-error
:n "_" #'flycheck-previous-error)
;; Eshell stuff
(setenv "SSH_AUTH_SOCK" (concat (getenv "HOME") "/.gnupg/S.gpg-agent.ssh"))
;(eshell/addpath "/opt/puppetlabs/pdk/bin")
;; Where to find rubocop
(setq flycheck-ruby-rubocop-executable "~/.rbenv/shims/rubocop")
(eval-after-load "flymake-json"
'(defun flymake-json-command (filename)
"Construct a command that flymake can use to check json source in FILENAME."
(list "jsonlint" "-V" "/Users/hunner/.doom.d/draft-07.json" "-c" "-q" filename)))
(after! org
(add-to-list 'org-export-backends 'confluence))
;; for https://github.com/zerolfx/copilot.el
;; accept completion from copilot and fallback to company
(defun my-tab ()
(interactive)
(or (copilot-accept-completion)
(company-indent-or-complete-common nil)))
(use-package! copilot
:hook (prog-mode . copilot-mode)
:bind (("C-TAB" . 'copilot-accept-completion-by-word)
("C-<tab>" . 'copilot-accept-completion-by-word)
:map company-active-map
("<tab>" . 'my-tab)
("TAB" . 'my-tab)
:map company-mode-map
("<tab>" . 'my-tab)
("TAB" . 'my-tab)))
(use-package! ox-jira
:after org)
;; From https://github.com/hlissner/doom-emacs/issues/581
(defun dlukes/ediff-doom-config (file)
"ediff the current config with the examples in doom-emacs-dir
There are multiple config files, so FILE specifies which one to
diff.
"
(interactive
(list (read-file-name "Config file to diff: " doom-user-dir)))
(let* ((stem (file-name-base file))
(customized-file (format "%s.el" stem))
(template-file-regex (format "^%s.example.el$" stem)))
(ediff-files
(concat doom-user-dir customized-file)
(car (directory-files-recursively
doom-emacs-dir
template-file-regex
nil
(lambda (d) (not (string-prefix-p "." (file-name-nondirectory d)))))))))