emacs: add {early-,}init.el, as exported from init.org
[~bandali/configs] / .emacs.d / init.org
index b46b8b0..42e4def 100644 (file)
@@ -146,7 +146,7 @@ If you would like a byte-compiled init file, set the following
 variable to ~t~, otherwise set it to ~nil~.
 
 #+begin_src emacs-lisp
-(defvar a/byte-compiled-init t
+(defvar a/byte-compiled-init nil
   "If non-nil, byte-(re)compile init.el on successful tangles.")
 #+end_src
 
@@ -297,6 +297,14 @@ integration, we will define a =use-feature= for plain ole
      ,@args))
 #+end_src
 
+While at it, let's exclude =straight.el='s build from recentf:
+
+#+begin_src emacs-lisp
+(with-eval-after-load 'recentf
+  (add-to-list 'recentf-exclude
+               (expand-file-name "~/.emacs.d/straight/build/")))
+#+end_src
+
 Also, here's a useful function for reloading the init file (useful
 after running =straight-check-all=:
 
@@ -943,6 +951,10 @@ And here's where my actual Org configurations begin:
                  ("\\subparagraph{%s}"  . "\\subparagraph*{%s}"))
                t)
   (require 'ox-beamer))
+
+(use-feature ox-extra
+  :config
+  (ox-extras-activate '(latex-header-blocks ignore-headlines)))
 #+end_src
 
 **** asynchronous tangle
@@ -1076,7 +1088,11 @@ There's no way I could top that, so I won't attempt to.
    ([S-down] . ivy-next-history-element)
    ("DEL"    . ivy-backward-delete-char))
   :config
-  (setq ivy-wrap t)
+  (setq ivy-wrap t
+        ivy-height 14
+        ivy-use-virtual-buffers t
+        ivy-virtual-abbreviate 'abbreviate
+        ivy-count-format "%d/%d ")
   (ivy-mode 1)
   ;; :custom-face
   ;; (ivy-minibuffer-match-face-2 ((t (:background "#e99ce8" :weight semi-bold))))
@@ -1090,7 +1106,7 @@ There's no way I could top that, so I won't attempt to.
 #+begin_src emacs-lisp
 (use-package swiper
   :after ivy
-  :bind (("C-s"   . swiper)
+  :bind (("C-s"   . swiper-isearch)
          ("C-r"   . swiper)
          ("C-S-s" . isearch-forward)))
 #+end_src
@@ -1102,9 +1118,9 @@ There's no way I could top that, so I won't attempt to.
   :after ivy
   :bind (([remap execute-extended-command] . counsel-M-x)
          ([remap find-file]                . counsel-find-file)
-         ("s-r"                            . counsel-recentf)
          ("C-c x"                          . counsel-M-x)
          ("C-c f ."                        . counsel-find-file)
+         ("C-c f l"                        . counsel-find-library)
          :map minibuffer-local-map
          ("C-r" . counsel-minibuffer-history))
   :config
@@ -1112,6 +1128,26 @@ There's no way I could top that, so I won't attempt to.
   (defalias 'locate #'counsel-locate))
 #+end_src
 
+*** COMMENT Helm
+
+#+begin_src emacs-lisp
+(use-package helm
+  :commands (helm-M-x helm-mini helm-resume)
+  :bind (("M-x"     . helm-M-x)
+         ("M-y"     . helm-show-kill-ring)
+         ("C-x b"   . helm-mini)
+         ("C-x C-b" . helm-buffers-list)
+         ("C-x C-f" . helm-find-files)
+         ("C-h r"   . helm-info-emacs)
+         ("s-r"     . helm-recentf)
+         ("C-s-r"   . helm-resume)
+         :map helm-map
+         ("<tab>" . helm-execute-persistent-action)
+         ("C-i"   . helm-execute-persistent-action) ; Make TAB work in terminals
+         ("C-z"   . helm-select-action))            ; List actions
+  :config (helm-mode 1))
+#+end_src
+
 *** eshell
 
 #+begin_src emacs-lisp
@@ -1201,7 +1237,12 @@ There's no way I could top that, so I won't attempt to.
         (mode . emacs-lisp-mode)
         (mode . scheme-mode)
         (mode . haskell-mode)
-        (mode . lean-mode)))
+        (mode . lean-mode)
+        (mode . alloy-mode)))
+      ("tex"
+       (or
+        (mode . bibtex-mode)
+        (mode . latex-mode)))
       ("emacs"
        (or
         (name . "^\\*scratch\\*$")
@@ -1863,6 +1904,14 @@ treemacs
 (use-package guix)
 #+end_src
 
+** COMMENT TeX
+
+#+begin_src emacs-lisp
+(use-package auctex
+  :custom
+  (font-latex-fontify-sectioning 'color))
+#+end_src
+
 * Emacs enhancements
 :PROPERTIES:
 :CUSTOM_ID: emacs-enhancements
@@ -2258,6 +2307,76 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
              :files (:defaults "Debbugs.wsdl")))
 #+end_src
 
+** org-ref
+
+#+begin_src emacs-lisp
+(use-package org-ref
+  :init
+  (a/setq-every '("~/usr/org/references.bib")
+    reftex-default-bibliography
+    org-ref-default-bibliography)
+  (setq
+   org-ref-bibliography-notes "~/usr/org/notes.org"
+   org-ref-pdf-directory "~/usr/org/bibtex-pdfs/"))
+#+end_src
+
+** slack
+
+Not an "Emacs enhancement", but just so that I don't have to use the
+proprietary web interface.  Needed for interacting with the URA(s)
+this summer.
+
+#+begin_src emacs-lisp
+(use-package slack
+  :commands (slack-start)
+  :init
+  (eval-when-compile                    ; silence the byte-compiler
+    (defvar url-http-data nil)
+    (defvar url-http-extra-headers nil)
+    (defvar url-http-method nil)
+    (defvar url-callback-function nil)
+    (defvar url-callback-arguments nil)
+    (defvar oauth--token-data nil))
+  (setq slack-buffer-emojify t
+        slack-prefer-current-team t)
+  :config
+  (slack-register-team
+   :name "nday-students"
+   :default t
+   :token nday-students-token
+   :subscribed-channels '(general)
+   :full-and-display-names t)
+  (add-to-list 'swiper-font-lock-exclude 'slack-message-buffer-mode t)
+  (setq lui-time-stamp-format "[%Y-%m-%d %H:%M:%S]"
+        lui-time-stamp-only-when-changed-p t
+        lui-time-stamp-position 'right)
+  :bind
+  (("C-c s s" . slack-start)
+   ("C-c s u" . slack-select-unread-rooms)
+   ("C-c s b" . slack-select-rooms)
+   ("C-c s t" . slack-change-current-team)
+   ("C-c s c" . slack-ws-close)
+   :map slack-mode-map
+   ("M-p"     . slack-buffer-goto-prev-message)
+   ("M-n"     . slack-buffer-goto-next-message)
+   ("C-c e"   . slack-message-edit)
+   ("C-c k"   . slack-message-delete)
+   ("C-c C-k" . slack-channel-leave)
+   ("C-c r a" . slack-message-add-reaction)
+   ("C-c r r" . slack-message-remove-reaction)
+   ("C-c r s" . slack-message-show-reaction-users)
+   ("C-c p l" . slack-room-pins-list)
+   ("C-c p a" . slack-message-pins-add)
+   ("C-c p r" . slack-message-pins-remove)
+   ("@"       . slack-message-embed-mention)
+   ("#"       . slack-message-embed-channel)))
+
+(use-package alert
+  :commands (alert)
+  :init
+  (setq alert-default-style 'notifier))
+#+end_src
+
 * Email
 :PROPERTIES:
 :CUSTOM_ID: email
@@ -2389,7 +2508,10 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
   :config
   (require 'ebdb)
   (require 'ebdb-mua)
-  (require 'ebdb-gnus))
+  (require 'ebdb-gnus)
+
+  (with-eval-after-load 'recentf
+    (add-to-list 'recentf-exclude gnus-home-directory)))
 
 (use-feature gnus-art
   :config
@@ -2509,7 +2631,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
            (concat "Hi %F,\n\n" a/message-cite-style-format)
          a/message-cite-style-format)))
     "Citation style based on Mozilla Thunderbird's. Use with message-cite-style.")
-  (setq message-cite-style 'message-cite-style-bandali
+  (setq ;; message-cite-style 'message-cite-style-bandali
         message-kill-buffer-on-exit t
         message-send-mail-function 'message-send-mail-with-sendmail
         message-sendmail-envelope-from 'header