* Table of Contents :TOC_3:noexport: - [[#general-settings][General settings]] - [[#variable-font-sizes-depending-on-screen-width-set-font-to-jetbrains-mono][Variable font sizes depending on screen width. Set font to JetBrains Mono]] - [[#theme-is-set-to-doom-molokai-from-doom-themes][Theme is set to doom-molokai from doom-themes]] - [[#fetch-password-from-authinfo][Fetch password from authinfo]] - [[#projectile][Projectile]] - [[#set-default-paths-projectile-should-search][Set default paths projectile should search]] - [[#circe][Circe]] - [[#connect-to-znc-passwords-are-gotten-from-password-store][Connect to ZNC. Passwords are gotten from Password Store.]] - [[#org-mode][Org mode]] - [[#general-settings-1][General settings]] - [[#when-moving-entries-up-and-down-in-the-buffer-use-j-and-k-instead-of--and-][When moving entries up and down in the buffer use `j` and `k` instead of `↑` and `↓`]] - [[#auto-save-org-mode-files][Auto save org-mode files]] - [[#org-protocol-capture-html][org-protocol-capture-html]] - [[#require-package][Require package]] - [[#org-capture-templates][org-capture-templates]] - [[#capture-web-data-for-org-protocol-capture-html][Capture web data for org-protocol-capture-html]] - [[#mu4e][mu4e]] - [[#setup-mu4e-with-multiple-profiles][Setup mu4e with multiple profiles]] - [[#elfeed][Elfeed]] - [[#elfeed-and-elfeed-protocol-to-read-feeds][elfeed and elfeed-protocol to read feeds.]] - [[#elfeed-org][elfeed-org]] - [[#elfeed-goodies][elfeed-goodies]] - [[#spelling][Spelling]] - [[#set-dictionaries-for-languages-i-use][Set dictionaries for languages I use]] - [[#markdown][Markdown]] - [[#open-mdx-files-in-markdown-mode][Open mdx files in markdown-mode]] - [[#haskell][Haskell]] - [[#auto-format-haskell-code-on-save][Auto format Haskell code on save]] * General settings ** Variable font sizes depending on screen width. Set font to [[https://www.jetbrains.com/lp/mono/][JetBrains Mono]] #+BEGIN_SRC emacs-lisp (when window-system (if (> (x-display-pixel-width) 2560) (setq doom-font (font-spec :family "JetBrains Mono" :size 12)) (setq doom-font (font-spec :family "JetBrains Mono" :size 16)))) #+END_SRC ** Theme is set to doom-molokai from [[https://github.com/hlissner/emacs-doom-themes][doom-themes]] #+BEGIN_SRC emacs-lisp (setq doom-theme 'doom-molokai) #+END_SRC ** Fetch password from authinfo #+BEGIN_SRC emacs-lisp (defun my-fetch-password (&rest params) (require 'auth-source) (let ((match (car (apply #'auth-source-search params)))) (if match (let ((secret (plist-get match :secret))) (if (functionp secret) (funcall secret) secret)) (error "Password not found for %S" params)))) #+END_SRC * [[https://www.projectile.mx/en/latest/][Projectile]] ** Set default paths [[https://www.projectile.mx/en/latest/][projectile]] should search #+BEGIN_SRC emacs-lisp (use-package! projectile :config (setq projectile-project-search-path '("~/devel/personal/" "~/devel/andthensome/" "~/Documents/" "~/dotfiles" "~/private-dotfiles"))) ; Default paths #+END_SRC * [[https://github.com/jorgenschaefer/circe][Circe]] ** Connect to [[https://wiki.znc.in/ZNC][ZNC]]. Passwords are gotten from [[https://www.passwordstore.org/][Password Store]]. #+BEGIN_SRC emacs-lisp (use-package! circe :config (setq circe-network-options `( ("znc-freenode" :host "irc.higherlearning.eu" :port "5000" :tls t ;; Enable tls :user "l0rd/freenode" :server-buffer-name "⇄ Freenode (ZNC)" :pass (lambda (&rest _) (+pass-get-secret "controlpanel/irc.higherlearning.eu")) ;; Get password from pass :channels ("#emacs")) ("znc-snoonet" :host "irc.higherlearning.eu" :port "5000" :tls t :user "l0rd/snoonet" :server-buffer-name "⇄ Snoonet (ZNC)" :pass (lambda (&rest _) (+pass-get-secret "controlpanel/irc.higherlearning.eu")) :channels ("#islam")) )) ) (add-hook 'circe-channel-mode-hook 'enable-lui-autopaste) #+END_SRC * [[https://orgmode.org/][Org mode]] ** General settings *** When moving entries up and down in the buffer use `j` and `k` instead of `↑` and `↓` #+BEGIN_SRC emacs-lisp (after! org (map! :map org-mode-map :n "M-j" #'org-metadown :n "M-k" #'org-metaup) ) #+END_SRC *** Auto save org-mode files #+BEGIN_SRC emacs-lisp (add-hook 'auto-save-hook 'org-save-all-org-buffers) #+END_SRC - Set default org directories - When task is set to `DONE` [[https://orgmode.org/manual/Closing-items.html][add timestamp and give the opportunity to type in a note]] - Show images in buffers as default #+BEGIN_SRC emacs-lisp (setq org-directory "~/Documents/org" org-agenda-files (directory-files-recursively "~/Documents/org/" "\.org$") org-log-done 'note org-startup-with-inline-images t) #+END_SRC ** [[https://github.com/alphapapa/org-protocol-capture-html][org-protocol-capture-html]] *** Require package #+BEGIN_SRC emacs-lisp (use-package! org-protocol-capture-html) #+END_SRC ** org-capture-templates *** Capture web data for [[https://github.com/alphapapa/org-protocol-capture-html][org-protocol-capture-html]] #+BEGIN_SRC emacs-lisp (after! org (add-to-list 'org-capture-templates '("w" "Web site" entry (file+olp "~/Documents/org/web.org" "Web") "* %c\n%U %?%:initial")) ) #+END_SRC * [[https://www.djcbsoftware.nl/code/mu/mu4e.html][mu4e]] ** Setup mu4e with multiple profiles #+BEGIN_SRC emacs-lisp (use-package! mu4e :config (setq sendmail-program "/usr/bin/msmtp" send-mail-function 'smtpmail-send-it message-sendmail-f-is-evil t message-sendmail-extra-arguments '("--read-envelope-from") message-send-mail-function 'message-send-mail-with-sendmail) (setq mu4e-maildirs-extension-custom-list '("/ryankes/INBOX" "/ryankes/Sent" "/ryankes/Drafts" "/ryankes/Archive" "/ryankes/Archive.quicknet" "/gmail/INBOX" "/gmail/Sent" "/gmail/Drafts" "/gmail/Archive" "/andthensome/INBOX" "/andthensome/Sent" "/andthensome/Drafts" "/andthensome/Archive"))) (setq mu4e-maildir "~/.local/share/mail" mu4e-maildir-shortcuts '(("/ryankes/INBOX" . ?r) ("/gmail/INBOX" . ?g) ("/andthensome/INBOX" . ?a)) mu4e-mu-home "~/.cache/mu" mu4e-update-interval 300 mu4e-get-mail-command "mailsync" mu4e-enable-mode-line t mu4e-use-fancy-chars t mu4e-context-policy 'pick-first mu4e-attachment-dir "~/Downloads/") (after! mu4e ;; load package to be able to capture emails for GTD (require 'org-mu4e) (setq mu4e-contexts `(,(make-mu4e-context :name "Ryankes" :match-func (lambda (msg) (when msg (string-match-p "^/ryankes" (mu4e-message-field msg :maildir)))):vars'((user-mail-address . "ryan@ryankes.eu") (user-full-name . "Ryan") (mu4e-sent-folder . "/ryankes/Sent") (mu4e-drafts-folder . "/ryankes/Drafts") (mu4e-trash-folder . "/ryankes/Trash") (mu4e-refile-folder . "/ryankes/Archive"))) ,(make-mu4e-context :name "Gmail" :match-func (lambda (msg) (when msg (string-match-p "^/gmail" (mu4e-message-field msg :maildir)))):vars'((user-mail-address . "alrayyes@gmail.com") (user-full-name . "Ryan") (mu4e-sent-folder . "/gmail/Sent") (mu4e-drafts-folder . "/gmail/Drafts") (mu4e-trash-folder . "/gmail/Trash") (mu4e-refile-folder . "/gmail/Archive"))) ,(make-mu4e-context :name "Andthensome" :match-func (lambda (msg) (when msg (string-match-p "^/andthensome" (mu4e-message-field msg :maildir)))):vars'((user-mail-address . "ryan@andthensome.nl") (user-full-name . "Ryan Kes") (mu4e-sent-folder . "/andthensome/Sent") (mu4e-drafts-folder . "/andthensome/Drafts") (mu4e-trash-folder . "/andthensome/Trash") (mu4e-refile-folder . "/andthensome/Archive")))))) (add-hook 'mu4e-view-mode-hook 'visual-line-mode) #+END_SRC * [[https://github.com/skeeto/elfeed][Elfeed]] ** elfeed and [[https://github.com/fasheng/elfeed-protocol][elfeed-protocol]] to read feeds. #+BEGIN_SRC emacs-lisp (use-package! elfeed :config (setq elfeed-use-curl t) (elfeed-set-timeout 36000) (setq elfeed-protocol-ttrss-maxsize 200) ; bigger than 200 is invalid (elfeed-protocol-enable) ; (defadvice elfeed (after configure-elfeed-feeds activate) "Make elfeed-org autotags rules works with elfeed-protocol." (defvar elfeed-protocol-tags) (setq elfeed-protocol-tags elfeed-feeds) (setq elfeed-feeds (list (list "ttrss+https://alrayyes@rss.higherlearning.eu" :password (password-store-get "emacs/rss") :autotags elfeed-protocol-tags))))) #+END_SRC ** [[https://github.com/remyhonig/elfeed-org][elfeed-org]] #+BEGIN_SRC emacs-lisp (use-package! elfeed-org :config (setq rmh-elfeed-org-files '("~/Documents/org/elfeed.org")) ) #+END_SRC ** [[https://github.com/algernon/elfeed-goodies][elfeed-goodies]] #+BEGIN_SRC emacs-lisp (use-package! elfeed-goodies :config (elfeed-goodies/setup)) #+END_SRC * Spelling ** Set dictionaries for languages I use #+BEGIN_SRC emacs-lisp (with-eval-after-load "ispell" (setq ispell-program-name "hunspell") ;; ispell-set-spellchecker-params has to be called ;; before ispell-hunspell-add-multi-dic will work (ispell-set-spellchecker-params) (ispell-hunspell-add-multi-dic "en_GB,nl_NL,en_US") (setq ispell-dictionary "en_GB,nl_NL,en_US")) #+END_SRC * Markdown ** Open mdx files in markdown-mode #+BEGIN_SRC emacs-lisp (add-to-list 'auto-mode-alist '("\\.mdx\\'" . markdown-mode)) #+END_SRC * Haskell ** Auto format Haskell code on save #+BEGIN_SRC emacs-lisp (custom-set-variables '(haskell-stylish-on-save t)) #+END_SRC