;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- (remove-hook 'doom-first-input-hook #'evil-snipe-mode) ;; 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. It is optional. ;; (setq user-full-name "John Doe" ;; user-mail-address "john@doe.com") ;; Doom exposes five (optional) variables for controlling fonts in Doom: ;; ;; - `doom-font' -- the primary font to use ;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable) ;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for ;; presentations or streaming. ;; - `doom-symbol-font' -- for symbols ;; - `doom-serif-font' -- for the `fixed-pitch-serif' face ;; ;; See 'C-h v doom-font' for documentation and more examples of what they ;; accept. For example: ;; ;; (setq doom-font (font-spec :family "Berkeley Mono" :size 12.0)) ;; If you or Emacs can't find your font, use 'M-x describe-font' to look them ;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to ;; refresh your font settings. If Emacs still can't find your font, it likely ;; wasn't installed correctly. Font issues are rarely Doom issues! ;; 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 'modus-vivendi) ;; Specify both a dark and light theme, like so and Doom will choose which one ;; to load based on your system light/dark setting: ;; ;; (setq doom-theme '(doom-one . doom-one-light)) ; (DARK . LIGHT) ;; ;; If you want more pro-active theme switching based on OS light/dark mode, look ;; up the `auto-dark' package. ;; 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) ;; 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 "~/notes/") ;zk4e setup (use-package! zk4e :commands (zk4e-list zk4e-edit zk4e-new zk4e-tag-list zk4e-index zk4e-select-notebook zk4e-goto-error) :custom (zk4e-notebook-directories '(("notes" . "~/notes/"))) :config (zk4e-select-notebook "notes") (add-hook 'zk4e-edit-hook #'zk4e-maybe-name-buffer)) ; gnus mail setup ;; encryption function (defun my/gnus-prompt-encrypt () "Ask wether to encrypt a message before sending with PGP" (when (y-or-n-p "Encrypt this message? ") (mml-secure-message-encrypt-pgpmime))) (add-hook 'message-send-hook #'my/gnus-prompt-encrypt) (setq auth-sources '("~/.authinfo.gpg") auth-source-cache-expiry nil epg-pinentry-mode 'loopback) ; actual gnus setup (broken for now) (setq gnus-select-method '(nnnil "")) (setq gnus-secondary-select-methods '((nnimap "disroot" (nnimap-address "disroot.org") (nnimap-server-port 993) (nnimap-stream ssl) (nnimap-authinfo-file "~/.authinfo.gpg") (nnimap-fetch-partial-articles "text/") (nnir-search-engine imap)))) (setq smtpmail-smtp-server "disroot.org" smtpmail-smtp-service 587 smtpmail-stream-type 'starttls message-send-mail-function #'smtpmail-send-it user-mail-address "roughlynamed@disroot.org" user-full-name "Magdalena Szweda") (setq gnus-message-archive-method '(nnimap "disroot") gnus-message-archive-group "Sent" nnmail-expiry-target "Trash") (setq gnus-large-newsgroup nil gnus-fetch-old-headers t) (setq mml-secure-openpgp-signers '("3258B28C124AB0891D6C9E929B72909EEF00CBD0") mml-secure-openpgp-sign-with-sender t) (add-hook 'message-setup-hook #'message-insert-signature) (add-hook 'message-send-hook #'mml-secure-message-sign-pgpmime) (setq message-signature "\n--\nMagdalena Szweda\nhttps://roughlynamed.net\nPGP: 3258 B28C 124A B089 1D6C 9E92 9B72 909E EF00 CBD0") (setq-default vterm-shell "/usr/bin/fish") (setq-default explicit-shell-file-name "/usr/bin/fish") (setq-default vterm-shell "/usr/bin/fish") (setq-default explicit-shell-file-name "/usr/bin/fish") (remove-hook 'doom-first-input-hook #'evil-snipe-mode) (map! :leader (:prefix ("n z" . "zk") :desc "Edit note" "e" #'zk4e-edit :desc "New note" "n" #'zk4e-new :desc "List notes" "l" #'zk4e-list :desc "Index" "i" #'zk4e-index :desc "Tags" "t" #'zk4e-tag-list :desc "Switch notebook" "s" #'zk4e-select-notebook :desc "Error log" "!" #'zk4e-goto-error)) (evil-define-key '(normal visual operator) 'global "n" 'evil-backward-char "e" 'evil-next-line "i" 'evil-previous-line "o" 'evil-forward-char) (evil-define-key '(normal visual operator) 'global "l" 'evil-backward-word-begin "L" 'evil-backward-WORD-begin "u" 'evil-forward-word-end "U" 'evil-forward-WORD-end "y" 'evil-forward-word-begin "Y" 'evil-forward-word-begin) (with-eval-after-load 'evil-ex (define-key evil-ex-completion-map (kbd "C-l") 'left-word) (define-key evil-ex-completion-map (kbd "C-y") 'right-word)) (evil-define-key 'normal 'global "s" 'evil-insert "S" 'evil-insert-line "t" 'evil-append "T" 'evil-append-line "h" 'evil-open-below "H" 'evil-open-above) (evil-define-key '(normal visual) 'global "w" 'evil-change "W" 'evil-change-line) (evil-define-key 'normal 'global "x" 'evil-delete-char "c" 'evil-yank "v" 'evil-paste-after "X" 'evil-delete-line "C" 'evil-yank-line "V" 'evil-paste-before) (evil-define-key 'visual 'global "x" 'evil-delete "c" 'evil-yank "v" 'evil-paste-after) (evil-define-key 'normal 'global "z" 'evil-undo "Z" 'evil-redo) (evil-define-key 'normal 'global "a" 'evil-visual-char "A" 'evil-visual-line "ga" 'evil-visual-restore) (evil-define-key '(normal visual operator) 'global "p" 'evil-find-char-to "P" 'evil-find-char-to-backward "b" 'evil-repeat-find-char "B" 'evil-repeat-find-char-reverse "k" 'evil-search-next "K" 'evil-search-previous) (with-eval-after-load 'evil (evil-define-key '(operator visual) 'global "r" evil-inner-text-objects-map)) (define-prefix-command 'my-colemak-fold-map) (evil-define-key '(normal visual) 'global "j" 'my-colemak-fold-map) (define-key my-colemak-fold-map "j" 'evil-scroll-line-to-center) (define-key my-colemak-fold-map "n" 'evil-scroll-line-to-top) (define-key my-colemak-fold-map "e" 'evil-scroll-line-to-bottom) (evil-define-key 'normal 'global "gK" 'evil-lookup) (evil-define-key 'normal 'global (kbd "C-w n") 'evil-window-left (kbd "C-w e") 'evil-window-down (kbd "C-w i") 'evil-window-up (kbd "C-w o") 'evil-window-right) ;; Whenever you reconfigure a package, make sure to wrap your config in an ;; `with-eval-after-load' block, otherwise Doom's defaults may override your ;; settings. E.g. ;; ;; (with-eval-after-load 'PACKAGE ;; (setq x y)) ;; ;; The exceptions to this rule: ;; ;; - Setting file/directory variables (like `org-directory') ;; - Setting variables which explicitly tell you to set them before their ;; package is loaded (see 'C-h v VARIABLE' to look them up). ;; - Setting doom variables (which start with 'doom-' or '+'). ;; ;; Here are some additional functions/macros that will help you configure Doom. ;; ;; - `load!' for loading external *.el files relative to this one ;; - `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. ;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces, ;; etc). ;; ;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how ;; they are implemented.