From 60a03d5e73a0a75eeef1d500e2da3307c5687278 Mon Sep 17 00:00:00 2001 From: bd Date: Thu, 2 Jan 2025 20:22:58 -0700 Subject: yasnippet->abbrev-mode --- .config/emacs/init.el | 2 +- .config/emacs/libraries/selector.el | 1 - .config/emacs/modules/bd--browse.el | 12 +- .config/emacs/modules/bd--devel.el | 3 +- .config/emacs/modules/bd--minibuffer.el | 10 +- .config/emacs/modules/bd--org.el | 269 ++++++++++++++------------ .config/emacs/modules/bd--window.el | 7 + .config/emacs/snippets/org-mode/align-star | 11 -- .config/emacs/snippets/org-mode/bmatrix | 13 -- .config/emacs/snippets/org-mode/case | 14 -- .config/emacs/snippets/org-mode/digraph | 17 -- .config/emacs/snippets/org-mode/env | 11 -- .config/emacs/snippets/org-mode/equation-star | 11 -- .config/emacs/snippets/snippet-mode/header | 17 -- 14 files changed, 171 insertions(+), 227 deletions(-) delete mode 100644 .config/emacs/snippets/org-mode/align-star delete mode 100644 .config/emacs/snippets/org-mode/bmatrix delete mode 100644 .config/emacs/snippets/org-mode/case delete mode 100644 .config/emacs/snippets/org-mode/digraph delete mode 100644 .config/emacs/snippets/org-mode/env delete mode 100644 .config/emacs/snippets/org-mode/equation-star delete mode 100644 .config/emacs/snippets/snippet-mode/header (limited to '.config/emacs') diff --git a/.config/emacs/init.el b/.config/emacs/init.el index 7e27b0e..c409bfb 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -104,7 +104,7 @@ (require 'bd--minibuffer) (require 'bd--window) (require 'bd--devel) -;; (require 'bd--org) +(require 'bd--org) (require 'bd--notes) (require 'bd--emms) (require 'bd--modeline) diff --git a/.config/emacs/libraries/selector.el b/.config/emacs/libraries/selector.el index 152b2c1..c493fd6 100644 --- a/.config/emacs/libraries/selector.el +++ b/.config/emacs/libraries/selector.el @@ -44,7 +44,6 @@ (defvar selector-minibuffer-map (make-sparse-keymap)) (define-key selector-minibuffer-map (kbd "\\") (lambda () (interactive) nil)) -(define-key selector-minibuffer-map (kbd "\\") (lambda () (interactive) nil)) (define-key selector-minibuffer-map (kbd "C-g") 'selector-quit) (define-key selector-minibuffer-map (kbd "C-c") 'selector-quit) (define-key selector-minibuffer-map (kbd "") 'selector-do) diff --git a/.config/emacs/modules/bd--browse.el b/.config/emacs/modules/bd--browse.el index 1d97760..f0a4f60 100644 --- a/.config/emacs/modules/bd--browse.el +++ b/.config/emacs/modules/bd--browse.el @@ -6,7 +6,17 @@ (require 'dash) (require 'fill-column) -(defconst bd/bookmarks nil) +(defun bd/browse (url &optional pref &rest _) + "Given PREF, launches URL in one of librewolf, torbrowser, +icecat, or eww." + (interactive) + (pcase pref + (0 (eww url)) + (1 (start-process "torbrowser" nil "torbrowser" "--new-window" url)) + (2 (start-process "icecat" nil "icecat" "--new-window" url)) + (_ (start-process "librewolf" nil "librewolf" "--new-window" url)))) +(setopt browse-url-browser-function 'bd/browse) + (defun bd/selector-bookmarks () "Selector source for all bookmarks." (selector-source-create diff --git a/.config/emacs/modules/bd--devel.el b/.config/emacs/modules/bd--devel.el index 75466f9..6f143ec 100644 --- a/.config/emacs/modules/bd--devel.el +++ b/.config/emacs/modules/bd--devel.el @@ -60,7 +60,8 @@ (display-buffer-in-side-window) (side . bottom) (slot . -1) - (width . 0.15))) + (width . 0.15) + (post-command-select-window t))) (keymap-set prog-mode-map "C-," #'(lambda () diff --git a/.config/emacs/modules/bd--minibuffer.el b/.config/emacs/modules/bd--minibuffer.el index bca9985..63a2fe0 100644 --- a/.config/emacs/modules/bd--minibuffer.el +++ b/.config/emacs/modules/bd--minibuffer.el @@ -28,6 +28,7 @@ (use-package selector :demand t :config + (setopt selector-minibuffer-lines 15) (defvar bd/navigate-recent-display-number 6 "The number of recent buffers that show up in bd/navigate.") (defvar bd/blacklisted-buffer-regexp-list @@ -124,7 +125,14 @@ selection commands.") files))) (when (not (null sources)) (selector sources))))) - (keymap-global-set "C-z s" 'bd/selector-rg)) + (keymap-global-set "C-z s" 'bd/selector-rg) + (keymap-global-set "C-z d" 'bd/selector-occur)) + +(defun bd/selector-occur () + "Sources for lines in the current file." + (interactive) + (when-let ((file (buffer-file-name))) + (selector (list (selector-file-contents-source file))))) (defun bd/selector-rg () "Sources for lines found via grep (or a clone)." diff --git a/.config/emacs/modules/bd--org.el b/.config/emacs/modules/bd--org.el index 7e7c2c2..ca68b79 100644 --- a/.config/emacs/modules/bd--org.el +++ b/.config/emacs/modules/bd--org.el @@ -5,18 +5,21 @@ (require 'fill-column) (use-package org + :demand t :hook ((org-mode . (lambda () - (org-indent-mode) - (org-toggle-inline-images) - (fill-column-mode) - (org-latex-preview '(16))))) + (org-indent-mode) + (org-toggle-inline-images) + (fill-column-mode) + (abbrev-mode) + (org-latex-preview '(16))))) :config (setopt org-ellipsis " ▾" - org-babel-python-command "python3" - org-confirm-babel-evaluate nil - org-hide-emphasis-markers t - org-startup-folded 'show3levels) + org-babel-python-command "python3" + org-confirm-babel-evaluate nil + org-hide-emphasis-markers t + org-startup-folded 'show3levels + org-src-window-setup 'current-window) (plist-put org-format-latex-options :scale 1.2) (push '("\\.pdf\\'" . "zathura %s") org-file-apps) (add-hook 'org-babel-after-execute-hook #'org-redisplay-inline-images) @@ -27,35 +30,45 @@ (lisp . t) (scheme . t) (dot . t) - (python . t)))) + (python . t))) + (define-abbrev org-mode-abbrev-table + "lbm" "\\begin{equation*}\n\\begin{bmatrix}\n\\end{bmatrix}\n\\end{equation*}") + (define-abbrev org-mode-abbrev-table + "lca" "\\begin{equation*}\n\\begin{cases}\n\\end{cases}\n\\end{equation*}") + (define-abbrev org-mode-abbrev-table + "gvd" "#+begin_src dot :file images/1.png\ndigraph g {\nrankdir=LR;\n\tnode [shape = doublecircle]; A;\n\tnode [shape = point]; qi\n\tnode[shape=circle];\n}\n#+end_src") + (define-abbrev org-mode-abbrev-table + "les" "\\begin{equation*}\n\\end{equation*}") + (define-abbrev org-mode-abbrev-table + "lbm" "\\begin{equation*}\n\\begin{bmatrix}\n\\end{bmatrix}\n\\end{equation*}")) (use-package ox :config (add-to-list 'org-latex-packages-alist '("" "listings")) (setopt org-latex-toc-command "\\tableofcontents \\clearpage" - org-latex-src-block-backend 'listings - org-latex-image-default-width ".6\\linewidth" - org-export-with-toc nil - org-export-preserve-breaks t - org-latex-classes - '(("article" - "\\PassOptionsToPackage{svgnames}{xcolor} + org-latex-src-block-backend 'listings + org-latex-image-default-width ".6\\linewidth" + org-export-with-toc nil + org-export-preserve-breaks t + org-latex-classes + '(("article" + "\\PassOptionsToPackage{svgnames}{xcolor} \\documentclass[11pt]{article} \\usepackage{listings} \\lstset{frame=single,aboveskip=1em, - framesep=.5em,backgroundcolor=\\color{AliceBlue}, - rulecolor=\\color{Black},framerule=1pt} + framesep=.5em,backgroundcolor=\\color{AliceBlue}, + rulecolor=\\color{Black},framerule=1pt} \\usepackage{xcolor} \\newcommand\\basicdefault[1]{\\scriptsize\\color{Black}\\fontfamily{pcr}\\selectfont} \\lstset{basicstyle=\\basicdefault{\\spaceskip1em}} \\lstset{keywordstyle=\\color{DarkGreen}\\bfseries, - identifierstyle=\\color{DarkRed}, - commentstyle=\\color{DimGray}\\upshape, - stringstyle=\\color{DarkBlue}\\upshape, - emphstyle=\\color{Chocolate}\\upshape, - showstringspaces=false, - columns=fullflexible, - keepspaces=true} + identifierstyle=\\color{DarkRed}, + commentstyle=\\color{DimGray}\\upshape, + stringstyle=\\color{DarkBlue}\\upshape, + emphstyle=\\color{Chocolate}\\upshape, + showstringspaces=false, + columns=fullflexible, + keepspaces=true} \\usepackage{parskip} \\makeatletter \\renewcommand{\\maketitle}{% @@ -72,21 +85,21 @@ citecolor=DarkRed,colorlinks=true} [PACKAGES] [EXTRA]" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) - ("report" "\\documentclass[11pt]{report}" - ("\\part{%s}" . "\\part*{%s}") ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}")) - ("book" "\\documentclass[11pt]{book}" ("\\part{%s}" . "\\part*{%s}") - ("\\chapter{%s}" . "\\chapter*{%s}") - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))))) + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) + ("report" "\\documentclass[11pt]{report}" + ("\\part{%s}" . "\\part*{%s}") ("\\chapter{%s}" . "\\chapter*{%s}") + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}")) + ("book" "\\documentclass[11pt]{book}" ("\\part{%s}" . "\\part*{%s}") + ("\\chapter{%s}" . "\\chapter*{%s}") + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))))) (use-package org-agenda :bind @@ -107,10 +120,10 @@ agenda views.") (defvar-local bd/device-list '(("garm" . ?G) - ("heimdallr" . ?H) - ("hodr" . ?M) - ("surt" . ?I) - ("vali" . ?V)) + ("heimdallr" . ?H) + ("hodr" . ?M) + ("surt" . ?I) + ("vali" . ?V)) "Devices for tagging, capturing, and various agenda views.") @@ -119,98 +132,98 @@ agenda views.") ORG-TAG-ALIST, returns a concatenated string representing all the tags ORd or ANDed together." (apply #'concat - (mapcar (lambda (e) - (concat (when or-p "|") (if add? "+" "-") (car e))) - tag-alist))) + (mapcar (lambda (e) + (concat (when or-p "|") (if add? "+" "-") (car e))) + tag-alist))) (setopt org-log-done 'time - org-deadline-warning-days 7 - org-log-into-drawer "history" - org-agenda-restore-windows-after-quit t - org-agenda-show-future-repeats nil - org-agenda-block-separator nil - org-deadline-warning-days 0 - org-todo-keywords - '((sequence "TODO(t)" "NEXT(n!)" "HOLD(h!)" "|" "DONE(d)" "CANC(c)")) - org-tag-alist - `(("noexport" . ?e) + org-deadline-warning-days 7 + org-log-into-drawer "history" + org-agenda-restore-windows-after-quit t + org-agenda-show-future-repeats nil + org-agenda-block-separator nil + org-deadline-warning-days 0 + org-todo-keywords + '((sequence "TODO(t)" "NEXT(n!)" "HOLD(h!)" "|" "DONE(d)" "CANC(c)")) + org-tag-alist + `(("noexport" . ?e) - ("chore" . ?C) - ,@bd/device-list + ("chore" . ?C) + ,@bd/device-list - ("idea" . ?i) - ("programming" . ?p) - ("web" . ?s) - ("writing" . ?w) - ("reading" . ?r) + ("idea" . ?i) + ("programming" . ?p) + ("web" . ?s) + ("writing" . ?w) + ("reading" . ?r) - ,@bd/course-list) - org-refile-targets '(("archived_tasks.org" :maxlevel . 1) - ("agenda_tasks.org" :maxlevel . 1)) - org-agenda-files `(,agenda-file "~/dc/agenda/archived_tasks.org") - org-capture-templates - `(("c" " College") - ("cs" "Software Engineering Theory" entry (file+olp ,agenda-file "CS520") - "* TODO %?\n DEADLINE: %^t") - ("cm" "Combinatorics/Graph Theory" entry (file+olp ,agenda-file "CS575") - "* TODO %?\n DEADLINE: %^t") - ("cc" "Compiler Techniques" entry (file+olp ,agenda-file "CS610") - "* TODO %?\n DEADLINE: %^t") - ("s" " Self") - ("si" "Idea" entry (file+olp ,agenda-file "Idea / Return") - "* TODO %?\n %u") - ("sc" "Context" entry (file+olp ,agenda-file "Idea / Return") - "* TODO %?\n %a") - ("st" "Deadline" entry (file+olp ,agenda-file "Deadline") - "* TODO %?\n DEADLINE: %^t") - ("sb" "Book" entry (file+olp ,agenda-file "Book List") - "* TODO %?\n %u"))) + ,@bd/course-list) + org-refile-targets '(("archived_tasks.org" :maxlevel . 1) + ("agenda_tasks.org" :maxlevel . 1)) + org-agenda-files `(,agenda-file "~/dc/agenda/archived_tasks.org") + org-capture-templates + `(("c" " College") + ("cs" "Software Engineering Theory" entry (file+olp ,agenda-file "CS520") + "* TODO %?\n DEADLINE: %^t") + ("cm" "Combinatorics/Graph Theory" entry (file+olp ,agenda-file "CS575") + "* TODO %?\n DEADLINE: %^t") + ("cc" "Compiler Techniques" entry (file+olp ,agenda-file "CS610") + "* TODO %?\n DEADLINE: %^t") + ("s" " Self") + ("si" "Idea" entry (file+olp ,agenda-file "Idea / Return") + "* TODO %?\n %u") + ("sc" "Context" entry (file+olp ,agenda-file "Idea / Return") + "* TODO %?\n %a") + ("st" "Deadline" entry (file+olp ,agenda-file "Deadline") + "* TODO %?\n DEADLINE: %^t") + ("sb" "Book" entry (file+olp ,agenda-file "Book List") + "* TODO %?\n %u"))) (let ((orphan-view '(tags-todo "-{.*}" - ((org-agenda-overriding-header "\nOrphaned Items\n"))))) + ((org-agenda-overriding-header "\nOrphaned Items\n"))))) (setopt org-agenda-custom-commands - `(("c" "Chores" - ((agenda "" ((org-agenda-entry-types '(:deadline)) - (org-agenda-show-all-dates nil) - (org-agenda-span 21) - (org-agenda-skip-function - '(org-agenda-skip-entry-if 'notregexp - (regexp-opt (cons "chore" (mapcar #'car bd/device-list))))) - (org-agenda-overriding-header "Priority Deadlines (+21d)\n"))) - (tags-todo (concat "chore" (bd/combine-tags bd/device-list nil nil)) - ((org-agenda-overriding-header "\nMundane\n"))) - ,@(mapcar (lambda (e) - `(tags-todo ,(car e) - ((org-agenda-overriding-header - (concat "\nDevice: " ,(capitalize (car e)) "\n"))))) - bd/device-list) - ,orphan-view)) - ("r" "Recreational" - ((tags-todo "+idea" - ((org-agenda-skip-function - '(org-agenda-skip-entry-if 'regexp "chore")) - (org-agenda-overriding-header "Ideas\n"))) - (tags-todo "+reading|+writing" - ((org-agenda-skip-function - '(org-agenda-skip-entry-if 'regexp "chore")) - (org-agenda-overriding-header "\nReading/Writing\n"))) - (tags-todo "+programming|+web" - ((org-agenda-skip-function - '(org-agenda-skip-entry-if 'regexp "chore")) - (org-agenda-overriding-header "\nProgramming\n"))) - ,orphan-view)) - ("s" "College" - ((tags-todo (bd/combine-tags bd/course-list t t) - ((org-agenda-overriding-header "\nAll Courses\n"))) - (agenda "" ((org-agenda-entry-types '(:deadline :scheduled)) - (org-agenda-show-all-dates nil) - (org-agenda-span 15) - (org-scheduled-past-days 7) - (org-agenda-skip-function - '(org-agenda-skip-entry-if 'notregexp - (regexp-opt (mapcar #'car bd/course-list)))) - (org-agenda-overriding-header "\nUpcoming Deadlines (+15d)\n"))) - ,orphan-view)))))) + `(("c" "Chores" + ((agenda "" ((org-agenda-entry-types '(:deadline)) + (org-agenda-show-all-dates nil) + (org-agenda-span 21) + (org-agenda-skip-function + '(org-agenda-skip-entry-if 'notregexp + (regexp-opt (cons "chore" (mapcar #'car bd/device-list))))) + (org-agenda-overriding-header "Priority Deadlines (+21d)\n"))) + (tags-todo (concat "chore" (bd/combine-tags bd/device-list nil nil)) + ((org-agenda-overriding-header "\nMundane\n"))) + ,@(mapcar (lambda (e) + `(tags-todo ,(car e) + ((org-agenda-overriding-header + (concat "\nDevice: " ,(capitalize (car e)) "\n"))))) + bd/device-list) + ,orphan-view)) + ("r" "Recreational" + ((tags-todo "+idea" + ((org-agenda-skip-function + '(org-agenda-skip-entry-if 'regexp "chore")) + (org-agenda-overriding-header "Ideas\n"))) + (tags-todo "+reading|+writing" + ((org-agenda-skip-function + '(org-agenda-skip-entry-if 'regexp "chore")) + (org-agenda-overriding-header "\nReading/Writing\n"))) + (tags-todo "+programming|+web" + ((org-agenda-skip-function + '(org-agenda-skip-entry-if 'regexp "chore")) + (org-agenda-overriding-header "\nProgramming\n"))) + ,orphan-view)) + ("s" "College" + ((tags-todo (bd/combine-tags bd/course-list t t) + ((org-agenda-overriding-header "\nAll Courses\n"))) + (agenda "" ((org-agenda-entry-types '(:deadline :scheduled)) + (org-agenda-show-all-dates nil) + (org-agenda-span 15) + (org-scheduled-past-days 7) + (org-agenda-skip-function + '(org-agenda-skip-entry-if 'notregexp + (regexp-opt (mapcar #'car bd/course-list)))) + (org-agenda-overriding-header "\nUpcoming Deadlines (+15d)\n"))) + ,orphan-view)))))) (provide 'bd--org) diff --git a/.config/emacs/modules/bd--window.el b/.config/emacs/modules/bd--window.el index b0eecf0..61a9e44 100644 --- a/.config/emacs/modules/bd--window.el +++ b/.config/emacs/modules/bd--window.el @@ -14,9 +14,16 @@ (setopt switch-to-buffer-obey-display-actions t switch-to-buffer-in-dedicated-window 'pop) +;; C-u C-h a ^display-buffer-[^-] (add-to-list 'display-buffer-alist '("^\\*Async Shell Command\\*.*$" (display-buffer-no-window))) +(add-to-list 'display-buffer-alist + '((major-mode . Info-mode) + (display-buffer-in-side-window) + (side . right) + (slot . -1) + (width . 0.15))) (defun bd/layout--do-with-haste (f) (let* ((args (transient-args 'bd/layout-dispatcher)) diff --git a/.config/emacs/snippets/org-mode/align-star b/.config/emacs/snippets/org-mode/align-star deleted file mode 100644 index 07a32ac..0000000 --- a/.config/emacs/snippets/org-mode/align-star +++ /dev/null @@ -1,11 +0,0 @@ -# -*- mode: snippet -*- -# name: align-star -# key: