diff --git a/README.org b/README.org index dc1756ae..e3f93841 100644 --- a/README.org +++ b/README.org @@ -74,6 +74,7 @@ Let's start by making some basic ui changes like turning off the scrollbar, tool (menu-bar-mode -1) (blink-cursor-mode -1) (column-number-mode +1) +(setq-default indent-tabs-mode nil) #+end_src In order to have this config work on both my desktop with regular joe-schmoe monitors and my laptop with new-hotness HiDPI monitor, I will set the font size if my system is the laptop to much higher. @@ -91,7 +92,7 @@ In order to have this config work on both my desktop with regular joe-schmoe mon :height chris/default-font-size) (set-face-attribute 'variable-pitch nil :font "Cantarell" :height (+ chris/default-font-size (/ chris/default-font-size 8)) - :weight 'regular)) + :weight 'regular)) (defun chris/set-transparency () "Set the frame to be transparent on Wayland compositors" @@ -101,10 +102,10 @@ In order to have this config work on both my desktop with regular joe-schmoe mon (if (daemonp) (add-hook 'after-make-frame-functions - (lambda (frame) - (with-selected-frame frame - (chris/set-font-faces) - (chris/set-transparency))) + (lambda (frame) + (with-selected-frame frame + (chris/set-font-faces) + (chris/set-transparency))) (chris/set-font-faces)) (chris/set-transparency)) #+end_src @@ -183,6 +184,12 @@ To use straight we need to bootstrap it. This code is pulled right from Straight (setq use-package-verbose t) #+end_src +Now let's make sure our package archives includes the newer org. +#+begin_src emacs-lisp :tangle no +(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t) +#+end_src + +Command-log-mode #+begin_src emacs-lisp (use-package command-log-mode :commands command-log-mode) @@ -204,9 +211,9 @@ Probably the prettiest and best modeline I've found. all-the-icons-scale-factor 0.9) (if (daemonp) (add-hook 'after-make-frame-functions - (lambda (frame) - (with-selected-frame frame - (setq doom-modeline-icon t)))))) + (lambda (frame) + (with-selected-frame frame + (setq doom-modeline-icon t)))))) #+end_src Again, doom is pretty and I have fallen in love with the snazzy theme and use it about anywhere I can. @@ -303,7 +310,7 @@ There are two major packages we need to get the functionality I desire. Evil and evil-want-C-u-scroll t evil-respect-visual-line-mode t evil-want-C-u-delete t - evil-undo-system 'undo-redo) + evil-undo-system 'undo-redo) :config (evil-mode +1)) #+end_src @@ -369,7 +376,7 @@ This evil-collection package includes a lot of other evil based things. :init (evil-escape-mode +1) :config (setq evil-escape-key-sequence "fd" - evil-escape-delay 0.3)) + evil-escape-delay 0.3)) #+end_src #+begin_src emacs-lisp @@ -441,7 +448,7 @@ Visual fill column does a lot of the same as olivetti, but works with visual lin :after org :config (setq visual-fill-column-width 100 - visual-fill-column-center-text t)) + visual-fill-column-center-text t)) #+end_src *** TOC-ORG #+begin_src emacs-lisp @@ -653,13 +660,13 @@ Ace link provides an avy like search for links. Upon using the keybindings prese #+begin_src emacs-lisp (setq display-buffer-alist '(("\\*e?shell\\*" - (display-buffer-pop-up-frame)) - ("*helpful*" - (display-buffer-pop-up-frame)) - ("*elfeed-entry*" - (display-buffer-pop-up-frame)) - ("*Bongo-Elfeed Queue*" - (display-buffer-pop-up-frame)))) + (display-buffer-pop-up-frame)) + ("*helpful*" + (display-buffer-pop-up-frame)) + ("*elfeed-entry*" + (display-buffer-pop-up-frame)) + ("*Bongo-Elfeed Queue*" + (display-buffer-pop-up-frame)))) #+end_src Since I like to make my window manager handle a lot of the window management, I will create a helper function for closing windows. @@ -703,7 +710,7 @@ Friar is a fennel repl in the awesome repl. It allows you to interact with Aweso #+begin_src emacs-lisp (use-package friar :straight (:host github :repo "warreq/friar" :branch "master" - :files (:defaults "*.lua" "*.fnl")) + :files (:defaults "*.lua" "*.fnl")) :after fennel-mode) #+end_src @@ -867,7 +874,7 @@ Let's start by creating a self contained function of what I'd like started on ev (display-line-numbers-mode -1) (variable-pitch-mode +1) (setq visual-fill-column-width 100 - visual-fill-column-center-text t)) + visual-fill-column-center-text t)) #+end_src This is the use-package definition with a lot of customization. Need to setup auto tangle and make sure I have some structure templates for org-mode. @@ -875,20 +882,22 @@ This is the use-package definition with a lot of customization. Need to setup au Part of this config includes some special capture templates for my work as a youth minister. I create lessons through both org-mode and org-roam capture templates. The first part comes from org-roam, then the next is org-mode. #+begin_src emacs-lisp (use-package org - :defer 1 + :straight t :config (setq org-startup-indented t - org-edit-src-content-indentation 0 - org-agenda-sticky t - org-fontify-quote-and-verse-blocks t) + org-edit-src-content-indentation 0 + org-agenda-sticky t + org-fontify-quote-and-verse-blocks t + org-src-preserve-indentation t + org-src-window-setup 'other-frame) (add-hook 'org-mode-hook 'chris/org-mode-setup) (org-babel-do-load-languages 'org-babel-load-languages - '((emacs-lisp . t) - (python . t) - (ditaa . t) - (shell . t))) + '((emacs-lisp . t) + (python . t) + (ditaa . t) + (shell . t))) (setq org-ditaa-jar-path "/usr/bin/ditaa") @@ -901,81 +910,65 @@ Part of this config includes some special capture templates for my work as a you (add-to-list 'org-structure-template-alist '("q" . "quote")) (setq org-capture-templates - '(("t" "Personal todo" entry - (file+headline "todo.org" "Inbox") - (file ".templates/tasks.org") :prepend t) - ("n" "Personal notes" entry - (file+headline "notes.org" "Inbox") - "* %u %?\n%i\n%a" :prepend t) - ("j" "Journal" entry - (file+olp+datetree +org-capture-journal-file) - "* %U %?\n%i\n%a" :prepend t) - ("p" "TFC Plan" entry - (function chris/org-roam-capture-lesson-file) - (file ".templates/tfcplantemplate.org") - :prepend nil - :jump-to-captured t - :empty-lines 1) - ("P" "TFC Posts" entry - (file+headline "/home/chris/org/nvtfc_social_media.org" "Posts") - (file ".templates/posts.org") - :prepend t - :jump-to-captured t) - ("r" "Templates for projects") - ("rt" "Project-local todo" entry - (file+headline +org-capture-project-todo-file "Inbox") - "* TODO %?\n%i\n%a" :prepend t) - ("rn" "Project-local notes" entry - (file+headline +org-capture-project-notes-file "Inbox") - "* %U %?\n%i\n%a" :prepend t) - ("rc" "Project-local changelog" entry - (file+headline +org-capture-project-changelog-file "Unreleased") - "* %U %?\n%i\n%a" :prepend t) - ("o" "Centralized templates for projects") - ("ot" "Project todo" entry #'+org-capture-central-project-todo-file - "* TODO %?\n %i\n %a" :heading "Tasks" :prepend nil) - ("on" "Project notes" entry #'+org-capture-central-project-notes-file - "* %U %?\n %i\n %a" :heading "Notes" :prepend t) - ("oc" "Project changelog" entry #'+org-capture-central-project-changelog-file - "* %U %?\n %i\n %a" :heading "Changelog" :prepend t)) - org-capture-use-agenda-date t - org-agenda-timegrid-use-ampm t) + '(("t" "Personal todo" entry + (file+headline "todo.org" "Inbox") + (file ".templates/tasks.org") :prepend t) + ("n" "Personal notes" entry + (file+headline "notes.org" "Inbox") + "* %u %?\n%i\n%a" :prepend t) + ("j" "Journal" entry + (file+olp+datetree +org-capture-journal-file) + "* %U %?\n%i\n%a" :prepend t) + ("p" "TFC Plan" entry + (function chris/org-roam-capture-lesson-file) + (file ".templates/tfcplantemplate.org") + :prepend nil + :jump-to-captured t + :empty-lines 1) + ("P" "TFC Posts" entry + (file+headline "/home/chris/org/nvtfc_social_media.org" "Posts") + (file ".templates/posts.org") + :prepend t + :jump-to-captured t) + ("r" "Templates for projects") + ("rt" "Project-local todo" entry + (file+headline +org-capture-project-todo-file "Inbox") + "* TODO %?\n%i\n%a" :prepend t) + ("rn" "Project-local notes" entry + (file+headline +org-capture-project-notes-file "Inbox") + "* %U %?\n%i\n%a" :prepend t) + ("rc" "Project-local changelog" entry + (file+headline +org-capture-project-changelog-file "Unreleased") + "* %U %?\n%i\n%a" :prepend t) + ("o" "Centralized templates for projects") + ("ot" "Project todo" entry #'+org-capture-central-project-todo-file + "* TODO %?\n %i\n %a" :heading "Tasks" :prepend nil) + ("on" "Project notes" entry #'+org-capture-central-project-notes-file + "* %U %?\n %i\n %a" :heading "Notes" :prepend t) + ("oc" "Project changelog" entry #'+org-capture-central-project-changelog-file + "* %U %?\n %i\n %a" :heading "Changelog" :prepend t)) + org-capture-use-agenda-date t + org-agenda-timegrid-use-ampm t) - ;;(setq org-superstar-headline-bullets-list '("◉" "◈" "▸" "✬" "◎" "◇" "❉" "✙" "❖")) - (setq org-imenu-depth 4) - (setq org-odt-styles-file "/home/chris/org/style.odt") - - (setq org-export-with-toc nil) - (setq org-export-with-author nil) - - (setq org-todo-keywords - '((sequence "TODO(t)" "PROJ(p)" "STRT(s)" "WAIT(w)" "HOLD(h)" "|" "DONE(d)" "CNCL(c)") - (sequence "[ ](T)" "[-](S)" "[?](W)" "|" "[X](D)"))) - - - (setq org-agenda-files - '("/home/chris/org/inbox.org" - "/home/chris/org/notes.org" - "/home/chris/org/repetition.org" - "/home/chris/org/tasks.org" - "/home/chris/org/tfc_plans.org" - "/home/chris/org/ministry_team.org" - "/home/chris/org/todo.org" - "/home/chris/org/newsletter.org" - "/home/chris/org/nvtfc_social_media.org" - "/home/chris/org/lessons/")) - ;; (add-to-list '("/home/chris/org/inbox.org" - ;; "/home/chris/org/notes.org" - ;; "/home/chris/org/repetition.org" - ;; "/home/chris/org/tasks.org" - ;; "/home/chris/org/tfc_plans.org" - ;; "/home/chris/org/ministry_team.org" - ;; "/home/chris/org/todo.org" - ;; "/home/chris/org/newsletter.org" - ;; "/home/chris/org/lesson_*.org") - ;; (expand-file-name )) - - (setq org-id-method 'ts) + (setq org-imenu-depth 4 + org-odt-styles-file "/home/chris/org/style.odt" + org-export-with-toc nil + org-export-with-author nil + org-todo-keywords + '((sequence "TODO(t)" "PROJ(p)" "STRT(s)" "WAIT(w)" "HOLD(h)" "|" "DONE(d)" "CNCL(c)") + (sequence "[ ](T)" "[-](S)" "[?](W)" "|" "[X](D)")) + org-agenda-files + '("/home/chris/org/inbox.org" + "/home/chris/org/notes.org" + "/home/chris/org/repetition.org" + "/home/chris/org/tasks.org" + "/home/chris/org/tfc_plans.org" + "/home/chris/org/ministry_team.org" + "/home/chris/org/todo.org" + "/home/chris/org/newsletter.org" + "/home/chris/org/nvtfc_social_media.org" + "/home/chris/org/lessons/") + org-id-method 'ts) (defun chris/org-columns-view () "Turn on org-columns overlay and turn off olivetti-mode" @@ -995,16 +988,16 @@ Part of this config includes some special capture templates for my work as a you ;;Let's make sure org-mode faces are inheriting fixed pitch faces. (dolist (face '(org-block - org-block-begin-line - org-block-end-line - org-code - org-document-info-keyword - org-meta-line - org-table - org-date - org-verbatim)) + org-block-begin-line + org-block-end-line + org-code + org-document-info-keyword + org-meta-line + org-table + org-date + org-verbatim)) (set-face-attribute `,face nil :inherit 'fixed-pitch)) - + (set-face-attribute 'org-block-end-line nil :inherit 'org-block-begin-line) (set-face-attribute 'org-quote nil :background "#242631" :inherit 'fixed-pitch) @@ -1021,18 +1014,21 @@ Part of this config includes some special capture templates for my work as a you "rr" 'org-refile "e" 'org-export-dispatch) ('normal org-agenda-mode-map - "q" 'org-agenda-quit - "r" 'org-agenda-redo - "d" 'org-agenda-deadline - "s" 'org-agenda-schedule - "t" 'org-agenda-todo) + "q" 'org-agenda-quit + "r" 'org-agenda-redo + "d" 'org-agenda-deadline + "s" 'org-agenda-schedule + "t" 'org-agenda-todo) ('normal org-columns-map - "j" 'outline-next-heading - "h" 'outline-previous-heading - "q" 'chris/org-columns-quit) + "j" 'outline-next-heading + "h" 'outline-previous-heading + "q" 'chris/org-columns-quit) ('normal org-mode-map - "RET" 'chris/org-dwim-at-point - "gC" 'chris/org-columns-view)) + "RET" 'chris/org-dwim-at-point + "gC" 'chris/org-columns-view + "ge" 'org-edit-src-code) + ('normal 'org-src-mode-map + "q" 'org-edit-src-abort)) #+end_src We need to create a lesson capture function to find our lesson files differently each time we run our TFC plan capture. This is the most unique part of my capture template. This function uses =org-roam-find-file= to pick the lesson file that I need to add my lesson plan to. This way the lesson itself is created before the plan. @@ -1102,13 +1098,17 @@ We also need to setup some capture templates to use some specific setups with my #+BEGIN_SRC emacs-lisp (use-package org-roam :after org + ;; :ensure t :commands (org-roam org-roam-find-file org-roam-insert) + :hook + (org-load . org-roam-mode) :config - (setq org-roam-directory "~/org") - (setq org-roam-buffer-width 0.25) - (setq org-roam-file-exclude-regexp ".stversion.*\|.stfolder.*\|.*~.*\|.*sync.*") - (setq org-roam-db-location "~/.dotemacs/org-roam.db") - (setq org-roam-capture-templates + (setq org-roam-directory "~/org" + org-roam-buffer-width 0.25 + org-roam-file-exclude-regexp ".stversion.*\|.stfolder.*\|.*~.*\|.*sync.*" + org-roam-db-location "~/.dotemacs/org-roam.db" + org-roam-completion-everywhere t + org-roam-capture-templates '(("d" "default" plain (function org-roam--capture-get-point) "%?" :file-name "${slug}" @@ -1120,9 +1120,9 @@ We also need to setup some capture templates to use some specific setups with my ("l" "TFC Lesson" plain (function org-roam--capture-get-point) (file ".templates/lessontemplate.org") :file-name "lessons/${slug}" - :head "#+TITLE: ${title}\n#+AUTHOR: Chris Cochrun\n#+CREATED: %<%D - %I:%M %p>\n"))) + :head "#+TITLE: ${title}\n#+AUTHOR: Chris Cochrun\n#+CREATED: %<%D - %I:%M %p>\n")) - (setq org-roam-dailies-capture-templates + org-roam-dailies-capture-templates '(("d" "daily" plain #'org-roam-capture--get-point "" :immediate-finish t :file-name "%<%Y-%m-%d>" @@ -1135,9 +1135,9 @@ We also need to setup some capture templates to use some specific setups with my (chris/leader-keys :states 'normal :keymaps 'override - "nf" '(org-roam-find-file :which-key "org roam ff") - "nr" 'org-roam - "ni" 'org-roam-insert)) + "nf" '(org-roam-find-file :which-key "org roam ff") + "nr" 'org-roam + "ni" 'org-roam-insert)) #+END_SRC @@ -1168,8 +1168,8 @@ Org-Superstar makes the stars at the beginning of the line in =org-mode= a lot p (org-superstar-mode +1) (setq org-superstar-headline-bullets-list '("\u25c9" "\u25c8" "盛" "\u25ce" "\u272c" "\u25c7" "\u2749" "\u2719" "\u2756")) (setq org-superstar-item-bullet-alist '((?- . ?\u25b8) - (?+ . ?\u2749) - (?* . ?\u25c9))) + (?+ . ?\u2749) + (?* . ?\u25c9))) (set-face-attribute 'org-superstar-item nil :inherit 'org-level-3) (add-hook 'org-mode-hook 'org-superstar-mode)) #+end_src @@ -1346,88 +1346,88 @@ If on a: :config (setq mail-user-agent 'mu4e-user-agent) (setq mu4e-maildir "~/Maildir" - user-full-name "Chris Cochrun" - mu4e-change-filenames-when-moving t - mu4e-get-mail-command "mbsync -a" - mu4e-update-interval (* 15 60) - mu4e-attachment-dir "/home/chris/Documents/PersonalImportant/attachments" - mu4e-completing-read-function #'completing-read) + user-full-name "Chris Cochrun" + mu4e-change-filenames-when-moving t + mu4e-get-mail-command "mbsync -a" + mu4e-update-interval (* 15 60) + mu4e-attachment-dir "/home/chris/Documents/PersonalImportant/attachments" + mu4e-completing-read-function #'completing-read) (setq mu4e-contexts - (list - (make-mu4e-context - :name "office" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/office" (mu4e-message-field msg :maildir)))) - :vars '((user-mail-address . "chris@tfcconnection.org") - (mu4e-sent-folder . "/office/Sent Items/") - (mu4e-drafts-folder . "/office/Drafts") - (mu4e-trash-folder . "/office/Deleted Items") - (mu4e-refile-folder . "/office/Archive") - (smtpmail-smtp-user . "chris@tfcconnection.org") - (mu4e-compose-signature . "---\nChris Cochrun"))) - (make-mu4e-context - :name "outlook" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/outlook" (mu4e-message-field msg :maildir)))) - :vars '((user-mail-address . "chris.cochrun@outlook.com") - (mu4e-sent-folder . "/outlook/Sent/") - (mu4e-drafts-folder . "/outlook/Drafts") - (mu4e-trash-folder . "/outlook/Deleted") - (mu4e-refile-folder . "/outlook/Archive") - (smtpmail-smtp-user . "chris.cochrun@outlook.com") - (mu4e-compose-signature . "---\nChris Cochrun"))) - (make-mu4e-context - :name "gmail" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/gmail" (mu4e-message-field msg :maildir)))) - :vars '((user-mail-address . "ccochrun21@gmail.com") - (mu4e-sent-folder . "/gmail/[Gmail].Sent Mail/") - (smtpmail-smtp-user . "ccochrun21@gmail.com") - (mu4e-compose-signature . "---\nChris Cochrun"))))) + (list + (make-mu4e-context + :name "office" + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/office" (mu4e-message-field msg :maildir)))) + :vars '((user-mail-address . "chris@tfcconnection.org") + (mu4e-sent-folder . "/office/Sent Items/") + (mu4e-drafts-folder . "/office/Drafts") + (mu4e-trash-folder . "/office/Deleted Items") + (mu4e-refile-folder . "/office/Archive") + (smtpmail-smtp-user . "chris@tfcconnection.org") + (mu4e-compose-signature . "---\nChris Cochrun"))) + (make-mu4e-context + :name "outlook" + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/outlook" (mu4e-message-field msg :maildir)))) + :vars '((user-mail-address . "chris.cochrun@outlook.com") + (mu4e-sent-folder . "/outlook/Sent/") + (mu4e-drafts-folder . "/outlook/Drafts") + (mu4e-trash-folder . "/outlook/Deleted") + (mu4e-refile-folder . "/outlook/Archive") + (smtpmail-smtp-user . "chris.cochrun@outlook.com") + (mu4e-compose-signature . "---\nChris Cochrun"))) + (make-mu4e-context + :name "gmail" + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/gmail" (mu4e-message-field msg :maildir)))) + :vars '((user-mail-address . "ccochrun21@gmail.com") + (mu4e-sent-folder . "/gmail/[Gmail].Sent Mail/") + (smtpmail-smtp-user . "ccochrun21@gmail.com") + (mu4e-compose-signature . "---\nChris Cochrun"))))) ;; Add the ability to send email for o365 (setq message-send-mail-function 'smtpmail-send-it - starttls-use-gnutls t - smtpmail-starttls-credentials '(("smtp.office365.com" 587 nil nil)) - smtpmail-auth-credentials - '(("smtp.office365.com" 587 "chris@tfcconnection.org" nil)) - smtpmail-default-smtp-server "smtp.office365.com" - smtpmail-smtp-server "smtp.office365.com" - smtpmail-smtp-service 587) + starttls-use-gnutls t + smtpmail-starttls-credentials '(("smtp.office365.com" 587 nil nil)) + smtpmail-auth-credentials + '(("smtp.office365.com" 587 "chris@tfcconnection.org" nil)) + smtpmail-default-smtp-server "smtp.office365.com" + smtpmail-smtp-server "smtp.office365.com" + smtpmail-smtp-service 587) ;; shortcuts in the jumplist by pressing "J" in the mu4e buffer (setq mu4e-maildir-shortcuts - '((:maildir "/office/Archive" :key ?a) - (:maildir "/office/INBOX" :key ?i) - (:maildir "/outlook/INBOX" :key ?l) - (:maildir "/office/Junk Email" :key ?j) - (:maildir "/office/INBOX/Website Forms" :key ?f) - (:maildir "/gmail/INBOX" :key ?g) - (:maildir "/office/Sent Items" :key ?s))) + '((:maildir "/office/Archive" :key ?a) + (:maildir "/office/INBOX" :key ?i) + (:maildir "/outlook/INBOX" :key ?l) + (:maildir "/office/Junk Email" :key ?j) + (:maildir "/office/INBOX/Website Forms" :key ?f) + (:maildir "/gmail/INBOX" :key ?g) + (:maildir "/office/Sent Items" :key ?s))) ;; (add-to-list mu4e-headers-actions ("org capture message" . mu4e-org-store-and-capture)) (setq mu4e-bookmarks - '((:name "Unread messages" - :query "flag:unread AND NOT flag:trashed AND NOT maildir:\"/outlook/Junk\" AND NOT maildir:\"/office/Junk Email\" AND NOT maildir:\"/outlook/Deleted\" AND NOT maildir:\"/office/Deleted Items\"" - :key 117) - (:name "Today's messages" - :query "date:today..now" - :key 116) - (:name "Last 7 days" - :query "date:7d..now" - :hide-unread t - :key 119) - (:name "Messages with images" - :query "mime:image/*" - :key 112))) + '((:name "Unread messages" + :query "flag:unread AND NOT flag:trashed AND NOT maildir:\"/outlook/Junk\" AND NOT maildir:\"/office/Junk Email\" AND NOT maildir:\"/outlook/Deleted\" AND NOT maildir:\"/office/Deleted Items\"" + :key 117) + (:name "Today's messages" + :query "date:today..now" + :key 116) + (:name "Last 7 days" + :query "date:7d..now" + :hide-unread t + :key 119) + (:name "Messages with images" + :query "mime:image/*" + :key 112))) (setq mu4e-mu-binary "/usr/bin/mu") (setq mu4e-use-fancy-chars t @@ -1444,15 +1444,15 @@ If on a: mu4e-headers-unread-mark '("u" . " ")) (setq mu4e-headers-fields - '((:human-date . 12) - (:flags . 6) - (:from . 22) - (:subject))) + '((:human-date . 12) + (:flags . 6) + (:from . 22) + (:subject))) (setq mu4e-view-actions - '(("capture message" . mu4e-action-capture-message) - ("view in browser" . mu4e-action-view-in-browser) - ("show this thread" . mu4e-action-show-thread))) + '(("capture message" . mu4e-action-capture-message) + ("view in browser" . mu4e-action-view-in-browser) + ("show this thread" . mu4e-action-show-thread))) (defun chris/setup-mu4e-headers () (toggle-truncate-lines +1) @@ -1620,9 +1620,9 @@ Let's add our own eshell prompt. and set the password cache to a significantly h (unless pop-eshell (setq pop-eshell (eshell 100)) (with-current-buffer pop-eshell - (eshell/clear-scrollback) - (rename-buffer "*eshell-pop*") - (display-buffer-in-side-window pop-eshell '((side . bottom)))))) + (eshell/clear-scrollback) + (rename-buffer "*eshell-pop*") + (display-buffer-in-side-window pop-eshell '((side . bottom)))))) (setq eshell-banner-message "") @@ -1665,8 +1665,8 @@ Let's use pdf-tools for a lot better interaction with pdfs. #+begin_src emacs-lisp (use-package pdf-tools :straight (:host github - :repo "flatwhatson/pdf-tools" - :branch "fix-macros") + :repo "flatwhatson/pdf-tools" + :branch "fix-macros") :defer 1 :config (pdf-tools-install)) @@ -1699,33 +1699,33 @@ interfere with the default `bongo-playlist-buffer'." (enclosure (elt (car (elfeed-entry-enclosures entry)) 0)) (url (if (string-prefix-p "https://thumbnails" enclosure) link - enclosure)) - (title (elfeed-entry-title entry)) - (bongo-pl chris/elfeed-bongo-playlist) - (buffer (get-buffer-create bongo-pl))) + enclosure)) + (title (elfeed-entry-title entry)) + (bongo-pl chris/elfeed-bongo-playlist) + (buffer (get-buffer-create bongo-pl))) (message "link is %s" link) (message "enclosure is %s" enclosure) (message "url is %s" url) (message "title is %s" title) (elfeed-search-untag-all-unread) (unless (bongo-playlist-buffer) - (bongo-playlist-buffer)) + (bongo-playlist-buffer)) (display-buffer buffer) (with-current-buffer buffer - (when (not (bongo-playlist-buffer-p)) + (when (not (bongo-playlist-buffer-p)) (bongo-playlist-mode) (setq-local bongo-library-buffer (get-buffer "*elfeed-search*")) (setq-local bongo-enabled-backends '(mpv)) (bongo-progressive-playback-mode)) - (goto-char (point-max)) - (bongo-insert-uri url (format "%s ==> %s" title url)) - (let ((inhibit-read-only t)) + (goto-char (point-max)) + (bongo-insert-uri url (format "%s ==> %s" title url)) + (let ((inhibit-read-only t)) (delete-duplicate-lines (point-min) (point-max))) - (bongo-recenter)) + (bongo-recenter)) (message "Enqueued %s “%s” in %s" - (if enclosure "podcast" "video") - (propertize title 'face 'italic) - (propertize bongo-pl 'face 'bold)))) + (if enclosure "podcast" "video") + (propertize title 'face 'italic) + (propertize bongo-pl 'face 'bold)))) (defun chris/elfeed-bongo-switch-to-playlist () (interactive) @@ -1733,7 +1733,7 @@ interfere with the default `bongo-playlist-buffer'." (buffer (get-buffer bongo-pl))) (if buffer (switch-to-buffer buffer) - (message "No `bongo' playlist is associated with `elfeed'.")))) + (message "No `bongo' playlist is associated with `elfeed'.")))) :general @@ -1768,14 +1768,14 @@ interfere with the default `bongo-playlist-buffer'." :matcher '((local-file "file:" "http:" "ftp:" "lbry:") "ogg" "flac" "mp3" "mka" "wav" "wma" "mpg" "mpeg" "vob" "avi" "ogm" "opus" "mp4" - "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts") + "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts") :matcher '(("mms:" "mmst:" "rtp:" "rtsp:" "udp:" "unsv:" "dvd:" "vcd:" "tv:" "dvb:" "mf:" "cdda:" "cddb:" "cue:" "sdp:" "mpst:" "tivo:") . t) :matcher '(("http:" "https:" "lbry:") . t)) (setq bongo-enabled-backends '(mpv) - bongo-track-mark-icon-file-name "track-mark-icon.png") + bongo-track-mark-icon-file-name "track-mark-icon.png") (defun chris/bongo-mark-line-forward () (interactive) @@ -1810,17 +1810,17 @@ I use transmission on a server to manage my torrents (if (string-equal (system-name) "syl") (setq transmission-host "home.cochrun.xyz" - transmission-rpc-path "/transmission/rpc" - transmission-refresh-modes '(transmission-mode - transmission-files-mode - transmission-info-mode - transmission-peers-mode)) + transmission-rpc-path "/transmission/rpc" + transmission-refresh-modes '(transmission-mode + transmission-files-mode + transmission-info-mode + transmission-peers-mode)) (setq transmission-host "192.168.1.2" - transmission-rpc-path "/transmission/rpc" - transmission-refresh-modes '(transmission-mode - transmission-files-mode - transmission-info-mode - transmission-peers-mode))) + transmission-rpc-path "/transmission/rpc" + transmission-refresh-modes '(transmission-mode + transmission-files-mode + transmission-info-mode + transmission-peers-mode))) :general (chris/leader-keys :states 'normal @@ -1910,8 +1910,8 @@ Let's also use an automatic garbage collector while idle to make better input. (gcmh-mode) :config (setq gcmh-idle-delay 5 - gcmh-high-cons-threshold (* 128 1024 1024) ; 128mb - gcmh-verbose t)) + gcmh-high-cons-threshold (* 128 1024 1024) ; 128mb + gcmh-verbose t)) #+end_src ** Logging diff --git a/init.el b/init.el index 449f33c2..b744a1d4 100644 --- a/init.el +++ b/init.el @@ -17,6 +17,7 @@ (menu-bar-mode -1) (blink-cursor-mode -1) (column-number-mode +1) +(setq-default indent-tabs-mode nil) (if (string-equal (system-name) "syl") (defvar chris/default-font-size 120) @@ -31,7 +32,7 @@ :height chris/default-font-size) (set-face-attribute 'variable-pitch nil :font "Cantarell" :height (+ chris/default-font-size (/ chris/default-font-size 8)) - :weight 'regular)) + :weight 'regular)) (defun chris/set-transparency () "Set the frame to be transparent on Wayland compositors" @@ -41,10 +42,10 @@ (if (daemonp) (add-hook 'after-make-frame-functions - (lambda (frame) - (with-selected-frame frame - (chris/set-font-faces) - (chris/set-transparency))) + (lambda (frame) + (with-selected-frame frame + (chris/set-font-faces) + (chris/set-transparency))) (chris/set-font-faces)) (chris/set-transparency)) @@ -96,8 +97,8 @@ (straight-use-package 'use-package) (setq use-package-verbose t) -(use-package command-log-mode - :commands command-log-mode) + (use-package command-log-mode + :commands command-log-mode) (use-package all-the-icons) @@ -110,9 +111,9 @@ all-the-icons-scale-factor 0.9) (if (daemonp) (add-hook 'after-make-frame-functions - (lambda (frame) - (with-selected-frame frame - (setq doom-modeline-icon t)))))) + (lambda (frame) + (with-selected-frame frame + (setq doom-modeline-icon t)))))) (use-package doom-themes :ensure t @@ -182,7 +183,7 @@ evil-want-C-u-scroll t evil-respect-visual-line-mode t evil-want-C-u-delete t - evil-undo-system 'undo-redo) + evil-undo-system 'undo-redo) :config (evil-mode +1)) @@ -241,7 +242,7 @@ :init (evil-escape-mode +1) :config (setq evil-escape-key-sequence "fd" - evil-escape-delay 0.3)) + evil-escape-delay 0.3)) (use-package evil-surround :after evil @@ -268,7 +269,7 @@ :after org :config (setq visual-fill-column-width 100 - visual-fill-column-center-text t)) + visual-fill-column-center-text t)) (use-package toc-org :after org) @@ -374,13 +375,13 @@ vertically." (setq display-buffer-alist '(("\\*e?shell\\*" - (display-buffer-pop-up-frame)) - ("*helpful*" - (display-buffer-pop-up-frame)) - ("*elfeed-entry*" - (display-buffer-pop-up-frame)) - ("*Bongo-Elfeed Queue*" - (display-buffer-pop-up-frame)))) + (display-buffer-pop-up-frame)) + ("*helpful*" + (display-buffer-pop-up-frame)) + ("*elfeed-entry*" + (display-buffer-pop-up-frame)) + ("*Bongo-Elfeed Queue*" + (display-buffer-pop-up-frame)))) (defun chris/kill-buffer-frame () "Kills the active buffer and frame" @@ -405,7 +406,7 @@ vertically." (use-package friar :straight (:host github :repo "warreq/friar" :branch "master" - :files (:defaults "*.lua" "*.fnl")) + :files (:defaults "*.lua" "*.fnl")) :after fennel-mode) (use-package yaml-mode @@ -519,23 +520,25 @@ vertically." (display-line-numbers-mode -1) (variable-pitch-mode +1) (setq visual-fill-column-width 100 - visual-fill-column-center-text t)) + visual-fill-column-center-text t)) (use-package org - :defer 1 + :straight t :config (setq org-startup-indented t - org-edit-src-content-indentation 0 - org-agenda-sticky t - org-fontify-quote-and-verse-blocks t) + org-edit-src-content-indentation 0 + org-agenda-sticky t + org-fontify-quote-and-verse-blocks t + org-src-preserve-indentation t + org-src-window-setup 'other-frame) (add-hook 'org-mode-hook 'chris/org-mode-setup) (org-babel-do-load-languages 'org-babel-load-languages - '((emacs-lisp . t) - (python . t) - (ditaa . t) - (shell . t))) + '((emacs-lisp . t) + (python . t) + (ditaa . t) + (shell . t))) (setq org-ditaa-jar-path "/usr/bin/ditaa") @@ -548,81 +551,65 @@ vertically." (add-to-list 'org-structure-template-alist '("q" . "quote")) (setq org-capture-templates - '(("t" "Personal todo" entry - (file+headline "todo.org" "Inbox") - (file ".templates/tasks.org") :prepend t) - ("n" "Personal notes" entry - (file+headline "notes.org" "Inbox") - "* %u %?\n%i\n%a" :prepend t) - ("j" "Journal" entry - (file+olp+datetree +org-capture-journal-file) - "* %U %?\n%i\n%a" :prepend t) - ("p" "TFC Plan" entry - (function chris/org-roam-capture-lesson-file) - (file ".templates/tfcplantemplate.org") - :prepend nil - :jump-to-captured t - :empty-lines 1) - ("P" "TFC Posts" entry - (file+headline "/home/chris/org/nvtfc_social_media.org" "Posts") - (file ".templates/posts.org") - :prepend t - :jump-to-captured t) - ("r" "Templates for projects") - ("rt" "Project-local todo" entry - (file+headline +org-capture-project-todo-file "Inbox") - "* TODO %?\n%i\n%a" :prepend t) - ("rn" "Project-local notes" entry - (file+headline +org-capture-project-notes-file "Inbox") - "* %U %?\n%i\n%a" :prepend t) - ("rc" "Project-local changelog" entry - (file+headline +org-capture-project-changelog-file "Unreleased") - "* %U %?\n%i\n%a" :prepend t) - ("o" "Centralized templates for projects") - ("ot" "Project todo" entry #'+org-capture-central-project-todo-file - "* TODO %?\n %i\n %a" :heading "Tasks" :prepend nil) - ("on" "Project notes" entry #'+org-capture-central-project-notes-file - "* %U %?\n %i\n %a" :heading "Notes" :prepend t) - ("oc" "Project changelog" entry #'+org-capture-central-project-changelog-file - "* %U %?\n %i\n %a" :heading "Changelog" :prepend t)) - org-capture-use-agenda-date t - org-agenda-timegrid-use-ampm t) + '(("t" "Personal todo" entry + (file+headline "todo.org" "Inbox") + (file ".templates/tasks.org") :prepend t) + ("n" "Personal notes" entry + (file+headline "notes.org" "Inbox") + "* %u %?\n%i\n%a" :prepend t) + ("j" "Journal" entry + (file+olp+datetree +org-capture-journal-file) + "* %U %?\n%i\n%a" :prepend t) + ("p" "TFC Plan" entry + (function chris/org-roam-capture-lesson-file) + (file ".templates/tfcplantemplate.org") + :prepend nil + :jump-to-captured t + :empty-lines 1) + ("P" "TFC Posts" entry + (file+headline "/home/chris/org/nvtfc_social_media.org" "Posts") + (file ".templates/posts.org") + :prepend t + :jump-to-captured t) + ("r" "Templates for projects") + ("rt" "Project-local todo" entry + (file+headline +org-capture-project-todo-file "Inbox") + "* TODO %?\n%i\n%a" :prepend t) + ("rn" "Project-local notes" entry + (file+headline +org-capture-project-notes-file "Inbox") + "* %U %?\n%i\n%a" :prepend t) + ("rc" "Project-local changelog" entry + (file+headline +org-capture-project-changelog-file "Unreleased") + "* %U %?\n%i\n%a" :prepend t) + ("o" "Centralized templates for projects") + ("ot" "Project todo" entry #'+org-capture-central-project-todo-file + "* TODO %?\n %i\n %a" :heading "Tasks" :prepend nil) + ("on" "Project notes" entry #'+org-capture-central-project-notes-file + "* %U %?\n %i\n %a" :heading "Notes" :prepend t) + ("oc" "Project changelog" entry #'+org-capture-central-project-changelog-file + "* %U %?\n %i\n %a" :heading "Changelog" :prepend t)) + org-capture-use-agenda-date t + org-agenda-timegrid-use-ampm t) - ;;(setq org-superstar-headline-bullets-list '("◉" "◈" "▸" "✬" "◎" "◇" "❉" "✙" "❖")) - (setq org-imenu-depth 4) - (setq org-odt-styles-file "/home/chris/org/style.odt") - - (setq org-export-with-toc nil) - (setq org-export-with-author nil) - - (setq org-todo-keywords - '((sequence "TODO(t)" "PROJ(p)" "STRT(s)" "WAIT(w)" "HOLD(h)" "|" "DONE(d)" "CNCL(c)") - (sequence "[ ](T)" "[-](S)" "[?](W)" "|" "[X](D)"))) - - - (setq org-agenda-files - '("/home/chris/org/inbox.org" - "/home/chris/org/notes.org" - "/home/chris/org/repetition.org" - "/home/chris/org/tasks.org" - "/home/chris/org/tfc_plans.org" - "/home/chris/org/ministry_team.org" - "/home/chris/org/todo.org" - "/home/chris/org/newsletter.org" - "/home/chris/org/nvtfc_social_media.org" - "/home/chris/org/lessons/")) - ;; (add-to-list '("/home/chris/org/inbox.org" - ;; "/home/chris/org/notes.org" - ;; "/home/chris/org/repetition.org" - ;; "/home/chris/org/tasks.org" - ;; "/home/chris/org/tfc_plans.org" - ;; "/home/chris/org/ministry_team.org" - ;; "/home/chris/org/todo.org" - ;; "/home/chris/org/newsletter.org" - ;; "/home/chris/org/lesson_*.org") - ;; (expand-file-name )) - - (setq org-id-method 'ts) + (setq org-imenu-depth 4 + org-odt-styles-file "/home/chris/org/style.odt" + org-export-with-toc nil + org-export-with-author nil + org-todo-keywords + '((sequence "TODO(t)" "PROJ(p)" "STRT(s)" "WAIT(w)" "HOLD(h)" "|" "DONE(d)" "CNCL(c)") + (sequence "[ ](T)" "[-](S)" "[?](W)" "|" "[X](D)")) + org-agenda-files + '("/home/chris/org/inbox.org" + "/home/chris/org/notes.org" + "/home/chris/org/repetition.org" + "/home/chris/org/tasks.org" + "/home/chris/org/tfc_plans.org" + "/home/chris/org/ministry_team.org" + "/home/chris/org/todo.org" + "/home/chris/org/newsletter.org" + "/home/chris/org/nvtfc_social_media.org" + "/home/chris/org/lessons/") + org-id-method 'ts) (defun chris/org-columns-view () "Turn on org-columns overlay and turn off olivetti-mode" @@ -642,16 +629,16 @@ vertically." ;;Let's make sure org-mode faces are inheriting fixed pitch faces. (dolist (face '(org-block - org-block-begin-line - org-block-end-line - org-code - org-document-info-keyword - org-meta-line - org-table - org-date - org-verbatim)) + org-block-begin-line + org-block-end-line + org-code + org-document-info-keyword + org-meta-line + org-table + org-date + org-verbatim)) (set-face-attribute `,face nil :inherit 'fixed-pitch)) - + (set-face-attribute 'org-block-end-line nil :inherit 'org-block-begin-line) (set-face-attribute 'org-quote nil :background "#242631" :inherit 'fixed-pitch) @@ -668,18 +655,21 @@ vertically." "rr" 'org-refile "e" 'org-export-dispatch) ('normal org-agenda-mode-map - "q" 'org-agenda-quit - "r" 'org-agenda-redo - "d" 'org-agenda-deadline - "s" 'org-agenda-schedule - "t" 'org-agenda-todo) + "q" 'org-agenda-quit + "r" 'org-agenda-redo + "d" 'org-agenda-deadline + "s" 'org-agenda-schedule + "t" 'org-agenda-todo) ('normal org-columns-map - "j" 'outline-next-heading - "h" 'outline-previous-heading - "q" 'chris/org-columns-quit) + "j" 'outline-next-heading + "h" 'outline-previous-heading + "q" 'chris/org-columns-quit) ('normal org-mode-map - "RET" 'chris/org-dwim-at-point - "gC" 'chris/org-columns-view)) + "RET" 'chris/org-dwim-at-point + "gC" 'chris/org-columns-view + "ge" 'org-edit-src-code) + ('normal 'org-src-mode-map + "q" 'org-edit-src-abort)) (defun chris/org-roam-capture-lesson-file () "Function to return the lesson file that is needed for TFC plan capture and move to correct position for plan insertion" @@ -726,13 +716,17 @@ vertically." (use-package org-roam :after org + ;; :ensure t :commands (org-roam org-roam-find-file org-roam-insert) + :hook + (org-load . org-roam-mode) :config - (setq org-roam-directory "~/org") - (setq org-roam-buffer-width 0.25) - (setq org-roam-file-exclude-regexp ".stversion.*\|.stfolder.*\|.*~.*\|.*sync.*") - (setq org-roam-db-location "~/.dotemacs/org-roam.db") - (setq org-roam-capture-templates + (setq org-roam-directory "~/org" + org-roam-buffer-width 0.25 + org-roam-file-exclude-regexp ".stversion.*\|.stfolder.*\|.*~.*\|.*sync.*" + org-roam-db-location "~/.dotemacs/org-roam.db" + org-roam-completion-everywhere t + org-roam-capture-templates '(("d" "default" plain (function org-roam--capture-get-point) "%?" :file-name "${slug}" @@ -744,9 +738,9 @@ vertically." ("l" "TFC Lesson" plain (function org-roam--capture-get-point) (file ".templates/lessontemplate.org") :file-name "lessons/${slug}" - :head "#+TITLE: ${title}\n#+AUTHOR: Chris Cochrun\n#+CREATED: %<%D - %I:%M %p>\n"))) + :head "#+TITLE: ${title}\n#+AUTHOR: Chris Cochrun\n#+CREATED: %<%D - %I:%M %p>\n")) - (setq org-roam-dailies-capture-templates + org-roam-dailies-capture-templates '(("d" "daily" plain #'org-roam-capture--get-point "" :immediate-finish t :file-name "%<%Y-%m-%d>" @@ -759,9 +753,9 @@ vertically." (chris/leader-keys :states 'normal :keymaps 'override - "nf" '(org-roam-find-file :which-key "org roam ff") - "nr" 'org-roam - "ni" 'org-roam-insert)) + "nf" '(org-roam-find-file :which-key "org roam ff") + "nr" 'org-roam + "ni" 'org-roam-insert)) (use-package org-roam-server :config @@ -783,8 +777,8 @@ vertically." (org-superstar-mode +1) (setq org-superstar-headline-bullets-list '("\u25c9" "\u25c8" "盛" "\u25ce" "\u272c" "\u25c7" "\u2749" "\u2719" "\u2756")) (setq org-superstar-item-bullet-alist '((?- . ?\u25b8) - (?+ . ?\u2749) - (?* . ?\u25c9))) + (?+ . ?\u2749) + (?* . ?\u25c9))) (set-face-attribute 'org-superstar-item nil :inherit 'org-level-3) (add-hook 'org-mode-hook 'org-superstar-mode)) @@ -956,88 +950,88 @@ If on a: :config (setq mail-user-agent 'mu4e-user-agent) (setq mu4e-maildir "~/Maildir" - user-full-name "Chris Cochrun" - mu4e-change-filenames-when-moving t - mu4e-get-mail-command "mbsync -a" - mu4e-update-interval (* 15 60) - mu4e-attachment-dir "/home/chris/Documents/PersonalImportant/attachments" - mu4e-completing-read-function #'completing-read) + user-full-name "Chris Cochrun" + mu4e-change-filenames-when-moving t + mu4e-get-mail-command "mbsync -a" + mu4e-update-interval (* 15 60) + mu4e-attachment-dir "/home/chris/Documents/PersonalImportant/attachments" + mu4e-completing-read-function #'completing-read) (setq mu4e-contexts - (list - (make-mu4e-context - :name "office" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/office" (mu4e-message-field msg :maildir)))) - :vars '((user-mail-address . "chris@tfcconnection.org") - (mu4e-sent-folder . "/office/Sent Items/") - (mu4e-drafts-folder . "/office/Drafts") - (mu4e-trash-folder . "/office/Deleted Items") - (mu4e-refile-folder . "/office/Archive") - (smtpmail-smtp-user . "chris@tfcconnection.org") - (mu4e-compose-signature . "---\nChris Cochrun"))) - (make-mu4e-context - :name "outlook" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/outlook" (mu4e-message-field msg :maildir)))) - :vars '((user-mail-address . "chris.cochrun@outlook.com") - (mu4e-sent-folder . "/outlook/Sent/") - (mu4e-drafts-folder . "/outlook/Drafts") - (mu4e-trash-folder . "/outlook/Deleted") - (mu4e-refile-folder . "/outlook/Archive") - (smtpmail-smtp-user . "chris.cochrun@outlook.com") - (mu4e-compose-signature . "---\nChris Cochrun"))) - (make-mu4e-context - :name "gmail" - :match-func - (lambda (msg) - (when msg - (string-prefix-p "/gmail" (mu4e-message-field msg :maildir)))) - :vars '((user-mail-address . "ccochrun21@gmail.com") - (mu4e-sent-folder . "/gmail/[Gmail].Sent Mail/") - (smtpmail-smtp-user . "ccochrun21@gmail.com") - (mu4e-compose-signature . "---\nChris Cochrun"))))) + (list + (make-mu4e-context + :name "office" + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/office" (mu4e-message-field msg :maildir)))) + :vars '((user-mail-address . "chris@tfcconnection.org") + (mu4e-sent-folder . "/office/Sent Items/") + (mu4e-drafts-folder . "/office/Drafts") + (mu4e-trash-folder . "/office/Deleted Items") + (mu4e-refile-folder . "/office/Archive") + (smtpmail-smtp-user . "chris@tfcconnection.org") + (mu4e-compose-signature . "---\nChris Cochrun"))) + (make-mu4e-context + :name "outlook" + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/outlook" (mu4e-message-field msg :maildir)))) + :vars '((user-mail-address . "chris.cochrun@outlook.com") + (mu4e-sent-folder . "/outlook/Sent/") + (mu4e-drafts-folder . "/outlook/Drafts") + (mu4e-trash-folder . "/outlook/Deleted") + (mu4e-refile-folder . "/outlook/Archive") + (smtpmail-smtp-user . "chris.cochrun@outlook.com") + (mu4e-compose-signature . "---\nChris Cochrun"))) + (make-mu4e-context + :name "gmail" + :match-func + (lambda (msg) + (when msg + (string-prefix-p "/gmail" (mu4e-message-field msg :maildir)))) + :vars '((user-mail-address . "ccochrun21@gmail.com") + (mu4e-sent-folder . "/gmail/[Gmail].Sent Mail/") + (smtpmail-smtp-user . "ccochrun21@gmail.com") + (mu4e-compose-signature . "---\nChris Cochrun"))))) ;; Add the ability to send email for o365 (setq message-send-mail-function 'smtpmail-send-it - starttls-use-gnutls t - smtpmail-starttls-credentials '(("smtp.office365.com" 587 nil nil)) - smtpmail-auth-credentials - '(("smtp.office365.com" 587 "chris@tfcconnection.org" nil)) - smtpmail-default-smtp-server "smtp.office365.com" - smtpmail-smtp-server "smtp.office365.com" - smtpmail-smtp-service 587) + starttls-use-gnutls t + smtpmail-starttls-credentials '(("smtp.office365.com" 587 nil nil)) + smtpmail-auth-credentials + '(("smtp.office365.com" 587 "chris@tfcconnection.org" nil)) + smtpmail-default-smtp-server "smtp.office365.com" + smtpmail-smtp-server "smtp.office365.com" + smtpmail-smtp-service 587) ;; shortcuts in the jumplist by pressing "J" in the mu4e buffer (setq mu4e-maildir-shortcuts - '((:maildir "/office/Archive" :key ?a) - (:maildir "/office/INBOX" :key ?i) - (:maildir "/outlook/INBOX" :key ?l) - (:maildir "/office/Junk Email" :key ?j) - (:maildir "/office/INBOX/Website Forms" :key ?f) - (:maildir "/gmail/INBOX" :key ?g) - (:maildir "/office/Sent Items" :key ?s))) + '((:maildir "/office/Archive" :key ?a) + (:maildir "/office/INBOX" :key ?i) + (:maildir "/outlook/INBOX" :key ?l) + (:maildir "/office/Junk Email" :key ?j) + (:maildir "/office/INBOX/Website Forms" :key ?f) + (:maildir "/gmail/INBOX" :key ?g) + (:maildir "/office/Sent Items" :key ?s))) ;; (add-to-list mu4e-headers-actions ("org capture message" . mu4e-org-store-and-capture)) (setq mu4e-bookmarks - '((:name "Unread messages" - :query "flag:unread AND NOT flag:trashed AND NOT maildir:\"/outlook/Junk\" AND NOT maildir:\"/office/Junk Email\" AND NOT maildir:\"/outlook/Deleted\" AND NOT maildir:\"/office/Deleted Items\"" - :key 117) - (:name "Today's messages" - :query "date:today..now" - :key 116) - (:name "Last 7 days" - :query "date:7d..now" - :hide-unread t - :key 119) - (:name "Messages with images" - :query "mime:image/*" - :key 112))) + '((:name "Unread messages" + :query "flag:unread AND NOT flag:trashed AND NOT maildir:\"/outlook/Junk\" AND NOT maildir:\"/office/Junk Email\" AND NOT maildir:\"/outlook/Deleted\" AND NOT maildir:\"/office/Deleted Items\"" + :key 117) + (:name "Today's messages" + :query "date:today..now" + :key 116) + (:name "Last 7 days" + :query "date:7d..now" + :hide-unread t + :key 119) + (:name "Messages with images" + :query "mime:image/*" + :key 112))) (setq mu4e-mu-binary "/usr/bin/mu") (setq mu4e-use-fancy-chars t @@ -1054,15 +1048,15 @@ If on a: mu4e-headers-unread-mark '("u" . " ")) (setq mu4e-headers-fields - '((:human-date . 12) - (:flags . 6) - (:from . 22) - (:subject))) + '((:human-date . 12) + (:flags . 6) + (:from . 22) + (:subject))) (setq mu4e-view-actions - '(("capture message" . mu4e-action-capture-message) - ("view in browser" . mu4e-action-view-in-browser) - ("show this thread" . mu4e-action-show-thread))) + '(("capture message" . mu4e-action-capture-message) + ("view in browser" . mu4e-action-view-in-browser) + ("show this thread" . mu4e-action-show-thread))) (defun chris/setup-mu4e-headers () (toggle-truncate-lines +1) @@ -1204,9 +1198,9 @@ If on a: (unless pop-eshell (setq pop-eshell (eshell 100)) (with-current-buffer pop-eshell - (eshell/clear-scrollback) - (rename-buffer "*eshell-pop*") - (display-buffer-in-side-window pop-eshell '((side . bottom)))))) + (eshell/clear-scrollback) + (rename-buffer "*eshell-pop*") + (display-buffer-in-side-window pop-eshell '((side . bottom)))))) (setq eshell-banner-message "") @@ -1237,8 +1231,8 @@ If on a: (use-package pdf-tools :straight (:host github - :repo "flatwhatson/pdf-tools" - :branch "fix-macros") + :repo "flatwhatson/pdf-tools" + :branch "fix-macros") :defer 1 :config (pdf-tools-install)) @@ -1265,33 +1259,33 @@ interfere with the default `bongo-playlist-buffer'." (enclosure (elt (car (elfeed-entry-enclosures entry)) 0)) (url (if (string-prefix-p "https://thumbnails" enclosure) link - enclosure)) - (title (elfeed-entry-title entry)) - (bongo-pl chris/elfeed-bongo-playlist) - (buffer (get-buffer-create bongo-pl))) + enclosure)) + (title (elfeed-entry-title entry)) + (bongo-pl chris/elfeed-bongo-playlist) + (buffer (get-buffer-create bongo-pl))) (message "link is %s" link) (message "enclosure is %s" enclosure) (message "url is %s" url) (message "title is %s" title) (elfeed-search-untag-all-unread) (unless (bongo-playlist-buffer) - (bongo-playlist-buffer)) + (bongo-playlist-buffer)) (display-buffer buffer) (with-current-buffer buffer - (when (not (bongo-playlist-buffer-p)) + (when (not (bongo-playlist-buffer-p)) (bongo-playlist-mode) (setq-local bongo-library-buffer (get-buffer "*elfeed-search*")) (setq-local bongo-enabled-backends '(mpv)) (bongo-progressive-playback-mode)) - (goto-char (point-max)) - (bongo-insert-uri url (format "%s ==> %s" title url)) - (let ((inhibit-read-only t)) + (goto-char (point-max)) + (bongo-insert-uri url (format "%s ==> %s" title url)) + (let ((inhibit-read-only t)) (delete-duplicate-lines (point-min) (point-max))) - (bongo-recenter)) + (bongo-recenter)) (message "Enqueued %s “%s” in %s" - (if enclosure "podcast" "video") - (propertize title 'face 'italic) - (propertize bongo-pl 'face 'bold)))) + (if enclosure "podcast" "video") + (propertize title 'face 'italic) + (propertize bongo-pl 'face 'bold)))) (defun chris/elfeed-bongo-switch-to-playlist () (interactive) @@ -1299,7 +1293,7 @@ interfere with the default `bongo-playlist-buffer'." (buffer (get-buffer bongo-pl))) (if buffer (switch-to-buffer buffer) - (message "No `bongo' playlist is associated with `elfeed'.")))) + (message "No `bongo' playlist is associated with `elfeed'.")))) :general @@ -1329,14 +1323,14 @@ interfere with the default `bongo-playlist-buffer'." :matcher '((local-file "file:" "http:" "ftp:" "lbry:") "ogg" "flac" "mp3" "mka" "wav" "wma" "mpg" "mpeg" "vob" "avi" "ogm" "opus" "mp4" - "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts") + "mkv" "mov" "asf" "wmv" "rm" "rmvb" "ts") :matcher '(("mms:" "mmst:" "rtp:" "rtsp:" "udp:" "unsv:" "dvd:" "vcd:" "tv:" "dvb:" "mf:" "cdda:" "cddb:" "cue:" "sdp:" "mpst:" "tivo:") . t) :matcher '(("http:" "https:" "lbry:") . t)) (setq bongo-enabled-backends '(mpv) - bongo-track-mark-icon-file-name "track-mark-icon.png") + bongo-track-mark-icon-file-name "track-mark-icon.png") (defun chris/bongo-mark-line-forward () (interactive) @@ -1367,17 +1361,17 @@ interfere with the default `bongo-playlist-buffer'." (if (string-equal (system-name) "syl") (setq transmission-host "home.cochrun.xyz" - transmission-rpc-path "/transmission/rpc" - transmission-refresh-modes '(transmission-mode - transmission-files-mode - transmission-info-mode - transmission-peers-mode)) + transmission-rpc-path "/transmission/rpc" + transmission-refresh-modes '(transmission-mode + transmission-files-mode + transmission-info-mode + transmission-peers-mode)) (setq transmission-host "192.168.1.2" - transmission-rpc-path "/transmission/rpc" - transmission-refresh-modes '(transmission-mode - transmission-files-mode - transmission-info-mode - transmission-peers-mode))) + transmission-rpc-path "/transmission/rpc" + transmission-refresh-modes '(transmission-mode + transmission-files-mode + transmission-info-mode + transmission-peers-mode))) :general (chris/leader-keys :states 'normal @@ -1439,60 +1433,7 @@ interfere with the default `bongo-playlist-buffer'." (gcmh-mode) :config (setq gcmh-idle-delay 5 - gcmh-high-cons-threshold (* 128 1024 1024) ; 128mb - gcmh-verbose t)) + gcmh-high-cons-threshold (* 128 1024 1024) ; 128mb + gcmh-verbose t)) (setq warning-suppress-types '((comp))) -(custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(ansi-color-faces-vector - [default default default italic underline success warning error]) - '(awesome-tray-mode-line-active-color "#0031a9") - '(awesome-tray-mode-line-inactive-color "#d7d7d7") - '(custom-safe-themes - '("7b3d184d2955990e4df1162aeff6bfb4e1c3e822368f0359e15e2974235d9fa8" "ca70827910547eb99368db50ac94556bbd194b7e8311cfbdbdcad8da65e803be" "f4876796ef5ee9c82b125a096a590c9891cec31320569fc6ff602ff99ed73dca" "f2927d7d87e8207fa9a0a003c0f222d45c948845de162c885bf6ad2a255babfd" "fd22c8c803f2dac71db953b93df6560b6b058cb931ac12f688def67f08c10640" "c086fe46209696a2d01752c0216ed72fd6faeabaaaa40db9fc1518abebaf700d" "2c49d6ac8c0bf19648c9d2eabec9b246d46cb94d83713eaae4f26b49a8183fc4" "990e24b406787568c592db2b853aa65ecc2dcd08146c0d22293259d400174e37" "79278310dd6cacf2d2f491063c4ab8b129fee2a498e4c25912ddaa6c3c5b621e" "93ed23c504b202cf96ee591138b0012c295338f38046a1f3c14522d4a64d7308" "e3c64e88fec56f86b49dcdc5a831e96782baf14b09397d4057156b17062a8848" default)) - '(exwm-floating-border-color "#888888") - '(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-fringe-red)) - '(flymake-note-bitmap '(exclamation-mark modus-themes-fringe-cyan)) - '(flymake-warning-bitmap '(exclamation-mark modus-themes-fringe-yellow)) - '(highlight-tail-colors '(("#aecf90" . 0) ("#c0efff" . 20))) - '(hl-sexp-background-color "#efebe9") - '(hl-todo-keyword-faces - '(("HOLD" . "#70480f") - ("TODO" . "#721045") - ("NEXT" . "#5317ac") - ("THEM" . "#8f0075") - ("PROG" . "#00538b") - ("OKAY" . "#30517f") - ("DONT" . "#315b00") - ("FAIL" . "#a60000") - ("BUG" . "#a60000") - ("DONE" . "#005e00") - ("NOTE" . "#863927") - ("KLUDGE" . "#813e00") - ("HACK" . "#813e00") - ("TEMP" . "#5f0000") - ("FIXME" . "#a0132f") - ("XXX+" . "#972500") - ("REVIEW" . "#005a5f") - ("DEPRECATED" . "#201f55"))) - '(ibuffer-deletion-face 'modus-themes-mark-del) - '(ibuffer-filter-group-name-face 'modus-themes-mark-symbol) - '(ibuffer-marked-face 'modus-themes-mark-sel) - '(ibuffer-title-face 'modus-themes-pseudo-header) - '(line-number-mode nil) - '(org-src-block-faces 'nil) - '(vc-annotate-background-mode nil) - '(xterm-color-names - ["black" "#a60000" "#005e00" "#813e00" "#0031a9" "#721045" "#00538b" "gray65"]) - '(xterm-color-names-bright - ["gray35" "#972500" "#315b00" "#70480f" "#2544bb" "#8f0075" "#30517f" "white"])) -(custom-set-faces - ;; custom-set-faces was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - )