]> git.armaanb.net Git - config.org.git/blobdiff - config.org
Update mail setup
[config.org.git] / config.org
index a7f47bc128ecb9fd00403355a53dae3d5dd4e698..be4c70bbbb8ab80fd6a3ae63e623bdd98601b795 100644 (file)
@@ -76,7 +76,8 @@ JetBrains Mono is a great programming font with ligatures. The "NF" means that i
        "[||]" "[<" "[|" "{|" "?." "?=" "?:" "##" "###" "####" "#["
        "#{" "#=" "#!" "#:" "#_(" "#_" "#?" "#(" ";;" "_|_" "__" "~~"
        "~~>" "~>" "~-" "~@" "$>" "^=" "]#"))
        "[||]" "[<" "[|" "{|" "?." "?=" "?:" "##" "###" "####" "#["
        "#{" "#=" "#!" "#:" "#_(" "#_" "#?" "#(" ";;" "_|_" "__" "~~"
        "~~>" "~>" "~-" "~@" "$>" "^=" "]#"))
-    (global-ligature-mode t))
+    ;; (global-ligature-mode t))
+    )
 #+end_src
 ** Line numbers
 Display relative line numbers except in certain modes.
 #+end_src
 ** Line numbers
 Display relative line numbers except in certain modes.
@@ -258,18 +259,20 @@ Define templates for lots of common structure elements. Mostly just used within
     :after org
     :straight (:type built-in)
     :config
     :after org
     :straight (:type built-in)
     :config
-    (dolist (addition '(("el" . "src emacs-lisp")
-                        ("el" . "src emacs-lisp")
-                        ("sp" . "src conf :tangle ~/.spectrwm.conf")
+    (dolist (addition '(
+                        ("ag" . "src conf :tangle ~/.gnupg/gpg-agent.conf")
                         ("ash" . "src shell :tangle ~/.config/ash/ashrc")
                         ("ash" . "src shell :tangle ~/.config/ash/ashrc")
-                        ("pi" . "src conf :tangle ~/.config/picom/picom.conf")
+                        ("el" . "src emacs-lisp")
                         ("git" . "src conf :tangle ~/.gitconfig")
                         ("git" . "src conf :tangle ~/.gitconfig")
-                        ("za" . "src conf :tangle ~/.config/zathura/zathurarc")
-                        ("xr" . "src conf :tangle ~/.Xresources")
-                        ("tm" . "src conf :tangle ~/.tmux.conf")
                         ("gp" . "src conf :tangle ~/.gnupg/gpg.conf")
                         ("gp" . "src conf :tangle ~/.gnupg/gpg.conf")
-                        ("ag" . "src conf :tangle ~/.gnupg/gpg-agent.conf")
-                        ("xm" . "src conf :tangle ~/.config/xmodmap")))
+                        ("mb" . "src conf :tangle ~/.mbsyncrc")
+                        ("pi" . "src conf :tangle ~/.config/picom/picom.conf")
+                        ("sp" . "src conf :tangle ~/.spectrwm.conf")
+                        ("tm" . "src conf :tangle ~/.tmux.conf")
+                        ("xm" . "src conf :tangle ~/.config/xmodmap")
+                        ("xr" . "src conf :tangle ~/.Xresources")
+                        ("za" . "src conf :tangle ~/.config/zathura/zathurarc")
+                        ))
       (add-to-list 'org-structure-template-alist addition)))
 #+end_src
 * Autocompletion
       (add-to-list 'org-structure-template-alist addition)))
 #+end_src
 * Autocompletion
@@ -314,13 +317,59 @@ Use elfeed for reading RSS. I have another file with all the feeds in it that I'
     :bind (:map elfeed-search-mode-map ("C-c C-o" . 'elfeed-show-visit)))
 #+end_src
 ** Email
     :bind (:map elfeed-search-mode-map ("C-c C-o" . 'elfeed-show-visit)))
 #+end_src
 ** Email
-Use mu4e for reading emails.
+Use mu4e and mbsync for reading emails.
+
 Contexts are a not very well known feature of mu4e that makes it super easy to manage multiple accounts. Much better than some of the hacky methods and external packages that I've seen.
 Contexts are a not very well known feature of mu4e that makes it super easy to manage multiple accounts. Much better than some of the hacky methods and external packages that I've seen.
-*** TODO Switch to mbsync
-=offlineimap= really crappy (slow and requires python2), and I need to replace it with =mbsync=.
-*** TODO Include mbsync/offlineimap config
-*** TODO Split up and document this config a bit
-*** Setup
+*** mbsync
+**** General
+#+begin_src conf :tangle ~/.mbsyncrc
+  Create Near
+  Expunge Both
+  SyncState *
+#+end_src
+**** Personal
+#+begin_src conf :tangle ~/.mbsyncrc
+  IMAPStore personal-remote
+  Host imap.mailbox.org
+  User me@armaanb.net
+  PassCmd "pash show login.mailbox.org/me@armaanb.net | head -n 1"
+
+  MaildirStore personal-local
+  Path ~/mail/personal/
+  Inbox ~/mail/personal/Inbox
+  Subfolders Verbatim
+
+  Channel personal-channel
+  Far :personal-remote:
+  Near :personal-local:
+  Patterns "INBOX*" "Drafts" "Archive" "Sent" "Trash"
+
+  Group personal
+  Channel personal-channel
+#+end_src
+**** School
+#+begin_src conf :tangle ~/.mbsyncrc
+  IMAPStore school-remote
+  SSLType IMAPS
+  Host imap.gmail.com
+  User abhojwani22@nobles.edu
+  PassCmd "pash show gmail-otp/abhojwani22@nobles.edu | head -n 1"
+
+  MaildirStore school-local
+  Path ~/mail/school/
+  Inbox ~/mail/school/Inbox
+  Subfolders Verbatim
+
+  Channel school-channel
+  Far :school-remote:
+  Near :school-local:
+  Patterns * ![Gmail]* "[Gmail]/Sent Mail" "[Gmail]/All Mail"
+
+  Group school
+  Channel school-channel
+#+end_src
+*** mu4e
+**** Setup
 #+begin_src emacs-lisp
   (use-package smtpmail
     :straight (:type built-in))
 #+begin_src emacs-lisp
   (use-package smtpmail
     :straight (:type built-in))
@@ -334,7 +383,7 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
           smtpmail-stream-type 'ssl
           smtpmail-smtp-service '465
           mu4e-change-filenames-when-moving t
           smtpmail-stream-type 'ssl
           smtpmail-smtp-service '465
           mu4e-change-filenames-when-moving t
-          mu4e-get-mail-command "offlineimap -q"
+          mu4e-get-mail-command "mbsync -a"
           message-citation-line-format "On %a %d %b %Y at %R, %f wrote:\n"
           message-citation-line-function 'message-insert-formatted-citation-line
           mu4e-completing-read-function 'ivy-completing-read
           message-citation-line-format "On %a %d %b %Y at %R, %f wrote:\n"
           message-citation-line-function 'message-insert-formatted-citation-line
           mu4e-completing-read-function 'ivy-completing-read
@@ -376,13 +425,13 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
                        (smtpmail-smtp-server . "smtp.mailbox.org")))))
     (add-to-list 'mu4e-bookmarks
                  '(:name "Unified inbox"
                        (smtpmail-smtp-server . "smtp.mailbox.org")))))
     (add-to-list 'mu4e-bookmarks
                  '(:name "Unified inbox"
-                         :query "maildir:\"/personal/INBOX\" or maildir:\"/school/INBOX\""
+                         :query "maildir:\"/personal/Inbox\" or maildir:\"/school/Inbox\""
                          :key ?b))
     :hook ((mu4e-compose-mode . flyspell-mode)
            (message-send-hook . (lambda () (unless (yes-or-no-p "Ya sure 'bout that?")
                                              (signal 'quit nil))))))
 #+end_src
                          :key ?b))
     :hook ((mu4e-compose-mode . flyspell-mode)
            (message-send-hook . (lambda () (unless (yes-or-no-p "Ya sure 'bout that?")
                                              (signal 'quit nil))))))
 #+end_src
-*** Discourage Gnus from displaying HTML emails
+**** Discourage Gnus from displaying HTML emails
 #+begin_src emacs-lisp
   (with-eval-after-load "mm-decode"
     (add-to-list 'mm-discouraged-alternatives "text/html")
 #+begin_src emacs-lisp
   (with-eval-after-load "mm-decode"
     (add-to-list 'mm-discouraged-alternatives "text/html")
@@ -557,12 +606,8 @@ I never use this, but apparently its very powerful. Another item on my todo list
   (use-package projectile
     :config (projectile-mode)
     :custom ((projectile-completion-system 'ivy))
   (use-package projectile
     :config (projectile-mode)
     :custom ((projectile-completion-system 'ivy))
-    :bind-keymap
-    ("C-c p" . projectile-command-map)
-    :init
-    (when (file-directory-p "~/src")
-      (setq projectile-project-search-path '("~/src")))
-    (setq projectile-switch-project-action #'projectile-dired))
+    :bind-keymap ("C-c p" . projectile-command-map)
+    :init (setq projectile-switch-project-action #'projectile-dired))
 
   (use-package counsel-projectile
     :after projectile
 
   (use-package counsel-projectile
     :after projectile
@@ -606,13 +651,28 @@ A very good Git interface.
     :straight (git-email :repo "https://git.sr.ht/~yoctocell/git-email")
     :config (git-email-piem-mode))
 #+end_src
     :straight (git-email :repo "https://git.sr.ht/~yoctocell/git-email")
     :config (git-email-piem-mode))
 #+end_src
-* General text editing
-** Indentation
-Automatically indent after every change. I'm not sure how much I like this. It slows down the editor and code sometimes ends up in a half-indented state meaning I have to manually reformat using "==" anyways.
-#+begin_src emacs-lisp
-  (use-package aggressive-indent
-    :config (global-aggressive-indent-mode))
+** C
+Modified from https://eklitzke.org/smarter-emacs-clang-format.
+
+Style is basically ddevault's style guide but with 4 spaces instead of 8 char tabs.
+#+begin_src emacs-lisp
+  (use-package clang-format
+    :custom (clang-format-style "{
+        BasedOnStyle: llvm,
+        AlwaysBreakAfterReturnType: AllDefinitions,
+        IndentWidth: 4,
+        }"))
+
+  (defun clang-format-buffer-smart ()
+    "Reformat buffer if .clang-format exists in the projectile root."
+    (when (file-exists-p (expand-file-name ".clang-format" (projectile-project-root)))
+      (when (if (eq major-mode 'c-mode))
+        (message "Formatting with clang-format...")
+        (clang-format-buffer))))
+
+  (add-hook 'before-save-hook 'clang-format-buffer-smart nil)
 #+end_src
 #+end_src
+* General text editing
 ** Spell checking
 Spell check in text mode, and in prog-mode comments.
 #+begin_src emacs-lisp
 ** Spell checking
 Spell check in text mode, and in prog-mode comments.
 #+begin_src emacs-lisp
@@ -819,6 +879,8 @@ I'm not a huge fan of how spectrwm handles keybindings, probably my biggest grip
   program[calendar] = emacsclient -ce '(acheam-calendar)'
   program[calc] = emacsclient -ce '(progn (calc) (windmove-up) (delete-window))'
   program[emacs] = emacsclient -c
   program[calendar] = emacsclient -ce '(acheam-calendar)'
   program[calc] = emacsclient -ce '(progn (calc) (windmove-up) (delete-window))'
   program[emacs] = emacsclient -c
+  program[bookmarks] = /home/armaa/src/bin/bookmarks
+  program[browser] = chorizo
 
   bind[email] = MOD+Control+1
   bind[irc] = MOD+Control+2
 
   bind[email] = MOD+Control+1
   bind[irc] = MOD+Control+2
@@ -826,6 +888,8 @@ I'm not a huge fan of how spectrwm handles keybindings, probably my biggest grip
   bind[calendar] = MOD+Control+4
   bind[calc] = MOD+Control+5
   bind[emacs] = MOD+Control+Return
   bind[calendar] = MOD+Control+4
   bind[calc] = MOD+Control+5
   bind[emacs] = MOD+Control+Return
+  bind[bookmarks] = MOD+Control+o
+  bind[browser] = MOD+Control+p
 #+end_src
 *** Quirks
 Float some specific programs by default.
 #+end_src
 *** Quirks
 Float some specific programs by default.