This commit is contained in:
Case Duckworth 2022-05-06 10:23:02 -05:00
parent 1df15735b2
commit fcd47a9c3a
8 changed files with 120 additions and 74 deletions

123
init.el
View File

@ -14,6 +14,14 @@
;; - Be kind to yourself. ;; - Be kind to yourself.
;; - Make good choices. ;; - Make good choices.
;;; Commentary
;; My init.el. There are many like it, but this one is mine.
;; Ideas:
;; [[https://emacs.stackexchange.com/questions/17278/truncate-only-certain-lines-and-use-continuation-lines-elsewhere][Truncate org-mode headings]]
;; [[https://emacs.stackexchange.com/questions/7432/make-visual-line-mode-more-compatible-with-org-mode][another link that might be useful for truncating]]
;;; Code: ;;; Code:
(let ((early-features `((early-init . ,(locate-user-emacs-file "early-init")) (let ((early-features `((early-init . ,(locate-user-emacs-file "early-init"))
@ -104,6 +112,8 @@
(:with-mode Custom-mode (:with-mode Custom-mode
(:local-set imenu-generic-expression +cus-edit-imenu-generic-expression))) (:local-set imenu-generic-expression +cus-edit-imenu-generic-expression)))
(setup (:require find-script))
(setup (:require goto-addr) (setup (:require goto-addr)
(if (fboundp #'global-goto-address-mode) (if (fboundp #'global-goto-address-mode)
(global-goto-address-mode) (global-goto-address-mode)
@ -242,17 +252,15 @@
(:option +browse-url-transformations `((,(rx (or "youtube.com" (:option +browse-url-transformations `((,(rx (or "youtube.com"
"youtu.be")) "youtu.be"))
. ,+invidious-host) . ,+invidious-host)
("twitter\\.com" ("twitter\\.com" . "nitter.net")
. "nitter.net") ("instagram\\.com" . "bibilogram.art")
("instagram\\.com"
. "bibilogram.art")
(,(rx (or "reddit.com" (,(rx (or "reddit.com"
"old.reddit.com")) "old.reddit.com"))
. "teddit.net") . "teddit.net")
("medium\\.com" ("medium\\.com" . "scribe.rip")
. "scribe.rip") ("www\\.npr\\.org" . "text.npr.org")
("www\\.npr\\.org" ;;TODO: Various paste sites
. "text.npr.org"))) ))
(+browse-url-transform-url-global-mode +1)) (+browse-url-transform-url-global-mode +1))
(setup calendar (setup calendar
@ -458,7 +466,8 @@
'(context-menu-ffap '(context-menu-ffap
context-menu-region context-menu-region
context-menu-undo context-menu-undo
context-menu-dictionary)) ;; context-menu-dictionary
))
(context-menu-mode +1)) (context-menu-mode +1))
(dolist (click '(;; Fix scrolling in the margin (dolist (click '(;; Fix scrolling in the margin
wheel-down double-wheel-down triple-wheel-down wheel-down double-wheel-down triple-wheel-down
@ -467,9 +476,25 @@
(global-set-key (vector 'left-margin click) 'mwheel-scroll))) (global-set-key (vector 'left-margin click) 'mwheel-scroll)))
(setup net-utils (setup net-utils
(:needs "traceroute")
(:require +finger) ; fixes `finger' to use var below (:require +finger) ; fixes `finger' to use var below
(:option finger-X.500-host-regexps '(".") ; only send username (:option finger-X.500-host-regexps '(".") ; only send username
)) )
(require 'transient)
(transient-define-prefix net-utils ()
"Networking utilities"
["Actions"
("p" "Ping" ping)
("i" "Ifconfig" ifconfig)
("w" "Iwconfig" iwconfig)
("n" "Netstat" netstat)
("a" "Arp" arp)
("r" "Route" route)
("h" "Nslookup host" nslookup-host)
("d" "Dig" dig)
("s" "Smb Client" smbclient)
("t" "Traceroute" traceroute)])
(:+key "C-z M-n" #'net-utils))
(setup notmuch (setup notmuch
(:load-from "~/usr/share/emacs/site-lisp/") (:load-from "~/usr/share/emacs/site-lisp/")
@ -558,7 +583,7 @@
org-fontify-done-headline t org-fontify-done-headline t
org-fontify-quote-and-verse-blocks t org-fontify-quote-and-verse-blocks t
org-fontify-whole-heading-line t org-fontify-whole-heading-line t
org-hide-emphasis-markers t org-hide-emphasis-markers nil
org-html-coding-system 'utf-8-unix org-html-coding-system 'utf-8-unix
org-image-actual-width (list (* (window-font-width) org-image-actual-width (list (* (window-font-width)
(- fill-column 8))) (- fill-column 8)))
@ -617,7 +642,15 @@
"C-c C-p" #'+org-previous-heading-widen "C-c C-p" #'+org-previous-heading-widen
"C-c C-o" #'+org-open-at-point-dwim "C-c C-o" #'+org-open-at-point-dwim
"`" #'+org-insert-tilde "`" #'+org-insert-tilde
"~" #'+org-insert-backtick) "~" #'+org-insert-backtick
"C-c C-x l" #'org-toggle-link-display
"C-c C-x m" (lambda () (interactive)
(setq-local org-hide-emphasis-markers
(not org-hide-emphasis-markers))
(font-lock-update))
"C-c C-x r" #'+org-drawer-list-add-resource
"C-M-k" #'kill-paragraph
"C-M-t" #'transpose-paragraphs)
(:global [f8] #'org-clock-in (:global [f8] #'org-clock-in
[f9] #'org-clock-out [f9] #'org-clock-out
"C-c l" #'org-store-link) "C-c l" #'org-store-link)
@ -629,6 +662,12 @@
(:local-set prettify-symbols-alist '(("DEADLINE:" . ?→) (:local-set prettify-symbols-alist '(("DEADLINE:" . ?→)
("SCHEDULED:" . ?↷) ("SCHEDULED:" . ?↷)
("CLOSED:" . ?✓)) ("CLOSED:" . ?✓))
;; electric-pair-pairs
;; (append electric-pair-pairs
;; (mapcar (lambda (emph)
;; (let ((ch (string-to-char (car emph))))
;; (cons ch ch)))
;; org-emphasis-alist))
;;+modeline-position-function #'+org-count-words-stupidly ;;+modeline-position-function #'+org-count-words-stupidly
) )
(:local-hook user-save-hook #'+org-before-save@prettify-buffer) (:local-hook user-save-hook #'+org-before-save@prettify-buffer)
@ -646,6 +685,9 @@
(org-link-set-parameters "sms" :follow #'+org-sms-open) (org-link-set-parameters "sms" :follow #'+org-sms-open)
(setf (alist-get "\\.x?html?\\'" org-file-apps nil nil #'equal) (setf (alist-get "\\.x?html?\\'" org-file-apps nil nil #'equal)
#'+org-open-html)) #'+org-open-html))
(:face 'org-done '((t (:inherit (modus-themes-subtle-green))))
'org-tag '((t (:inherit (secondary-selection))))
'org-todo '((t (:inherit (modus-themes-subtle-red)))))
;; Extra keywords ;; Extra keywords
(font-lock-add-keywords (font-lock-add-keywords
'org-mode 'org-mode
@ -1158,10 +1200,6 @@
(:hook #'visual-line-mode (:hook #'visual-line-mode
#'enable-lui-track #'enable-lui-track
#'visual-fill-column-mode #'visual-fill-column-mode
(defun +disable-electric-pair-mode ()
"Disable `electric-pair-mode' in the current buffer."
(interactive)
(electric-pair-local-mode -1))
#'enable-lui-autopaste) #'enable-lui-autopaste)
(:local-set fringes-outside-margins t (:local-set fringes-outside-margins t
right-margin-width (length lui-time-stamp-format) right-margin-width (length lui-time-stamp-format)
@ -1178,6 +1216,7 @@
(setf (alist-get 'lui-next-button-or-complete vertico-multiform-commands) (setf (alist-get 'lui-next-button-or-complete vertico-multiform-commands)
'(flat)))) '(flat))))
(tracking-mode +1)
(:with-mode tracking-mode (:with-mode tracking-mode
(:option tracking-position 'before-modes) (:option tracking-position 'before-modes)
(:bind "C-c C-SPC" (lambda () (interactive) (:bind "C-c C-SPC" (lambda () (interactive)
@ -1295,19 +1334,20 @@
(with-eval-after-load 'vertico-multiform (with-eval-after-load 'vertico-multiform
(setf (alist-get 'consult-buffer vertico-multiform-commands) '(flat)) (setf (alist-get 'consult-buffer vertico-multiform-commands) '(flat))
(dolist (buf-cmd '(consult-find (dolist (buf-cmd '(consult-find
consult-yank-pop consult-flymake
consult-locate
consult-grep
consult-git-grep
consult-ripgrep
consult-line
consult-line-multi
consult-multi-occur
consult-keep-lines
consult-focus-lines consult-focus-lines
consult-git-grep
consult-grep
consult-imenu consult-imenu
consult-imenu-multi consult-imenu-multi
consult-outline)) consult-keep-lines
consult-line
consult-line-multi
consult-locate
consult-multi-occur
consult-outline
consult-ripgrep
consult-yank-pop))
(setf (alist-get buf-cmd vertico-multiform-commands) nil))))) (setf (alist-get buf-cmd vertico-multiform-commands) nil)))))
(setup (:straight consult-dir) (setup (:straight consult-dir)
@ -1505,6 +1545,11 @@
(add-hook 'embark-collect-mode-hook #'consult-preview-at-point-mode)) (add-hook 'embark-collect-mode-hook #'consult-preview-at-point-mode))
(setup (:straight embrace) (setup (:straight embrace)
(dolist (mode '(LaTeX-mode org-mode ruby-mode))
(add-hook (intern (format "%s-hook" mode))
(intern (format "embrace-%s-hook" mode))))
(:face 'embrace-help-pair-face '((t ( :inverse-video nil
:inherit font-lock-keyword-face))))
(:+key "C-," #'embrace-commander)) (:+key "C-," #'embrace-commander))
(setup (:straight (ement (setup (:straight (ement
@ -1611,7 +1656,7 @@
(setup (:straight (forge (setup (:straight (forge
:host github :repo "magit/forge") :host github :repo "magit/forge")
(eq system-type 'gnu/linux)) (eq system-type 'gnu/linux))
(require 'forge) (:quit) ; XXX: Somehow missing compat-26
(add-to-list 'forge-alist (add-to-list 'forge-alist
'("tildegit.org" "tildegit.org/api/v1" "tildegit.org" '("tildegit.org" "tildegit.org/api/v1" "tildegit.org"
forge-gitea-repository))) forge-gitea-repository)))
@ -1624,6 +1669,7 @@
(setup (:straight (frowny (setup (:straight (frowny
:host github :host github
:repo "duckwork/frowny.el")) :repo "duckwork/frowny.el"))
(:option frowny-eyes (rx (any ":=") (opt "'") (? "-")))
(global-frowny-mode +1)) (global-frowny-mode +1))
(setup (:straight gcmh) (setup (:straight gcmh)
@ -1749,9 +1795,6 @@
:fork ( :host nil :fork ( :host nil
:repo "https://codeberg.org/acdw/emacs-jabber"))) :repo "https://codeberg.org/acdw/emacs-jabber")))
(:also-load +jabber) (:also-load +jabber)
(defvar +jabber-ws-prefix 0 "Width to pad left side of chats.")
(defvar +jabber-pre-prompt " \n"
"String to show before a prompt.")
(:option jabber-account-list '(("acdw@hmm.st")) (:option jabber-account-list '(("acdw@hmm.st"))
jabber-groupchat-buffer-format "%n" jabber-groupchat-buffer-format "%n"
jabber-chat-buffer-format "%n" jabber-chat-buffer-format "%n"
@ -1760,7 +1803,7 @@
jabber-muc-decorate-presence-patterns jabber-muc-decorate-presence-patterns
'(("\\( enters the room ([^)]+)\\| has left the chatroom\\)$") '(("\\( enters the room ([^)]+)\\| has left the chatroom\\)$")
("." . jabber-muc-presence-dim)) ("." . jabber-muc-presence-dim))
jabber-muc-colorize-foreign t jabber-muc-colorize-foreign nil ; colorizing doesn't match my color theme
jabber-chat-foreign-prompt-format (concat +jabber-pre-prompt jabber-chat-foreign-prompt-format (concat +jabber-pre-prompt
"[%t] %n\n" "[%t] %n\n"
(make-string +jabber-ws-prefix (make-string +jabber-ws-prefix
@ -1794,7 +1837,6 @@
jabber-console-mode)) jabber-console-mode))
(let ((hook (intern (format "%s-hook" mode)))) (let ((hook (intern (format "%s-hook" mode))))
(add-hook hook #'visual-fill-column-mode))) (add-hook hook #'visual-fill-column-mode)))
(add-hook 'jabber-activity-mode-hook #'tracking-mode)
(with-eval-after-load 'tracking (with-eval-after-load 'tracking
(add-to-list 'tracking-ignored-buffers "discuss@conference.soprani.ca")) (add-to-list 'tracking-ignored-buffers "discuss@conference.soprani.ca"))
(:with-mode jabber-chat-mode (:with-mode jabber-chat-mode
@ -1888,6 +1930,7 @@
(setup (:straight mastodon) (setup (:straight mastodon)
(:option mastodon-instance-url "https://tiny.tilde.website" (:option mastodon-instance-url "https://tiny.tilde.website"
mastodon-active-user "acdw"
mastodon-client--token-file (.etc "mastodon.plstore") mastodon-client--token-file (.etc "mastodon.plstore")
mastodon-auth-source-file (seq-some (lambda (i) mastodon-auth-source-file (seq-some (lambda (i)
(when (and (stringp i) (when (and (stringp i)
@ -2016,7 +2059,7 @@
(:option completion-styles '(substring orderless basic) (:option completion-styles '(substring orderless basic)
completion-category-defaults nil completion-category-defaults nil
completion-category-overrides completion-category-overrides
'((file (styles partial-completion)) '((file (styles basic partial-completion))
(command (styles +orderless-with-initialism)) (command (styles +orderless-with-initialism))
(variable (styles +orderless-with-initialism)) (variable (styles +orderless-with-initialism))
(symbol (styles +orderless-with-initialism))) (symbol (styles +orderless-with-initialism)))
@ -2056,6 +2099,7 @@
(local-set-key (kbd "C-c M-o") 'org-mime-org-buffer-htmlize)))) (local-set-key (kbd "C-c M-o") 'org-mime-org-buffer-htmlize))))
(setup (:straight org-modern) (setup (:straight org-modern)
(:quit "I think I can do most of this myself.")
(:option org-modern-hide-stars nil (:option org-modern-hide-stars nil
org-modern-star nil org-modern-star nil
org-modern-list nil org-modern-list nil
@ -2081,7 +2125,9 @@
(org-visibility-enable-hooks)) (org-visibility-enable-hooks))
(setup (:straight orglink) (setup (:straight orglink)
(global-orglink-mode +1)) (:option orglink-activate-in-modes '(text-mode prog-mode))
(global-orglink-mode +1)
(global-goto-address-mode -1))
(setup (:straight package-lint)) (setup (:straight package-lint))
@ -2126,7 +2172,7 @@
(executable-find "g++"))) (executable-find "g++")))
(setf (alist-get "\\.pdf\\'" auto-mode-alist nil nil #'equal) (setf (alist-get "\\.pdf\\'" auto-mode-alist nil nil #'equal)
#'pdf-view-mode) #'pdf-view-mode)
(pdf-tools-install)) (pdf-tools-install t))
(setup (:straight (plancat (setup (:straight (plancat
:host github :host github
@ -2210,6 +2256,8 @@
(:also-load +slack) (:also-load +slack)
(:option slack-prefer-current-team t (:option slack-prefer-current-team t
slack-buffer-emojify t slack-buffer-emojify t
slack-thread-also-send-to-room nil
slack-typing-visibility 'buffer
slack-buffer-create-on-notify t slack-buffer-create-on-notify t
slack-enable-wysiwyg t slack-enable-wysiwyg t
slack-file-dir (xdg-user-dir "DOWNLOAD") slack-file-dir (xdg-user-dir "DOWNLOAD")
@ -2243,7 +2291,8 @@
(sophomore-enable #'narrow-to-region) (sophomore-enable #'narrow-to-region)
(sophomore-disable ; These are mostly annoying commands (sophomore-disable ; These are mostly annoying commands
#'view-hello-file #'view-hello-file
#'describe-gnu-project) #'describe-gnu-project
#'suspend-frame)
(sophomore-mode +1)) (sophomore-mode +1))
(setup (:straight ssh-config-mode) (setup (:straight ssh-config-mode)
@ -2257,7 +2306,7 @@
(setup (:straight super-save) (setup (:straight super-save)
(:option auto-save-default nil (:option auto-save-default nil
super-save-auto-save-when-idle t super-save-auto-save-when-idle t
super-save-idle-duration 60 super-save-idle-duration 30
super-save-exclude '(".gpg") super-save-exclude '(".gpg")
super-save-remote-files nil) super-save-remote-files nil)
(auto-save-visited-mode -1) (auto-save-visited-mode -1)

View File

@ -120,9 +120,9 @@ ARGS are ignored here, but passed on for later processing."
;; along with the rest of the args, in a list to the original caller (probably ;; along with the rest of the args, in a list to the original caller (probably
;; `browse-url'.) ;; `browse-url'.)
(apply 'list (apply 'list
(cl-loop with url = (substring-no-properties (cl-loop with url = (substring-no-properties
(if (consp url) (car url) url)) (if (consp url) (car url) url))
for (regex . transformation) in +browse-url-transformations for (regex . transformation) in +browse-url-transformations
if (string-match regex url) if (string-match regex url)
return (replace-match transformation nil nil url) return (replace-match transformation nil nil url)
;; else ;; else

View File

@ -5,7 +5,7 @@
(defun +consult-project-root () (defun +consult-project-root ()
"Return either the current project, or the VC root, of current file." "Return either the current project, or the VC root, of current file."
(if (and (functionp 'project-current) (if (and (functionp 'project-current)
(project-current)) (project-current))
(car (project-roots (project-current))) (car (project-roots (project-current)))
(vc-root-dir))) (vc-root-dir)))

View File

@ -2,18 +2,17 @@
;;; Code: ;;; Code:
(require 'vertico) (with-eval-after-load 'vertico
(defun +dired-goto-file (file)
(defun +dired-goto-file (file) "ADVICE for `dired-goto-file' to make RET call `vertico-exit'."
"ADVICE for `dired-goto-file' to make RET call `vertico-exit'." (interactive ; stolen from `dired-goto-file'
(interactive ; stolen from `dired-goto-file' (prog1
(prog1 (list (dlet ((vertico-map (copy-keymap vertico-map)))
(list (dlet ((vertico-map (copy-keymap vertico-map))) (define-key vertico-map (kbd "RET") #'vertico-exit)
(define-key vertico-map (kbd "RET") #'vertico-exit) (expand-file-name (read-file-name "Goto file: "
(expand-file-name (read-file-name "Goto file: " (dired-current-directory)))))
(dired-current-directory))))) (push-mark)))
(push-mark))) (dired-goto-file file)))
(dired-goto-file file))
;;; [[https://www.reddit.com/r/emacs/comments/u2lf9t/weekly_tips_tricks_c_thread/i4n9aoa/?context=3][Dim files in .gitignore]] ;;; [[https://www.reddit.com/r/emacs/comments/u2lf9t/weekly_tips_tricks_c_thread/i4n9aoa/?context=3][Dim files in .gitignore]]

View File

@ -72,11 +72,10 @@ are sorted lexigraphically."
;; otherwise, sort lexigraphically ;; otherwise, sort lexigraphically
(t (string< s1 s2))))))))) (t (string< s1 s2)))))))))
;; Return to original point relative to the defun we were in ;; Return to original point relative to the defun we were in
(goto-char (point-min)) (ignore-errors (goto-char (point-min))
(re-search-forward current-defun-re) (re-search-forward current-defun-re)
(beginning-of-defun) (beginning-of-defun)
(goto-char (+ (point) defun-point)) (goto-char (+ (point) defun-point)))))
))
(defun +init-sort-then-save () (defun +init-sort-then-save ()
"Sort init.el, then save it." "Sort init.el, then save it."

View File

@ -10,6 +10,18 @@
(require 'jabber) (require 'jabber)
(require 'tracking) (require 'tracking)
(defgroup +jabber nil
"Extra jabber.el customizations."
:group 'jabber)
(defcustom +jabber-ws-prefix 0
"Width to pad left side of chats."
:type 'string)
(defcustom +jabber-pre-prompt " \n"
"String to put before the prompt."
:type 'string)
(defvar +jabber-tracking-show-p #'jabber-activity-show-p-default (defvar +jabber-tracking-show-p #'jabber-activity-show-p-default
"Function that checks if the given JID should be shown in the mode line. "Function that checks if the given JID should be shown in the mode line.
This does the same as `jabber-activity-show-p', but for the This does the same as `jabber-activity-show-p', but for the

View File

@ -19,9 +19,9 @@
;; I need to define this map before the proper mode map. ;; I need to define this map before the proper mode map.
(defvar +key-leader-map (let ((map (make-sparse-keymap)) (defvar +key-leader-map (let ((map (make-sparse-keymap))
(c-z (global-key-binding "\C-z"))) (c-z (global-key-binding "\C-z")))
(define-key map "\C-z" c-z) ;;(define-key map "\C-z" c-z)
map) map)
"A leader keymap under the \"C-z\" bind.") "A leader keymap under the \"C-z\" bind.")
;; http://xahlee.info/emacs/emacs/emacs_menu_app_keys.html and ;; http://xahlee.info/emacs/emacs/emacs_menu_app_keys.html and

View File

@ -588,19 +588,6 @@ and POST-PROCESS are passed to `org-export-to-file'."
("" "---")))) ("" "---"))))
(replace-match replace nil nil))))) (replace-match replace nil nil)))))
;;; Toggle org-hide-emphasis-markers
(define-minor-mode +org-show-mode
"Show emphasis markers and full links in `org-mode'."
:lighter "/*/"
(setq org-hide-emphasis-markers (not +org-show-mode)
org-link-descriptive (not +org-show-mode))
(funcall (if +org-show-mode
#'remove-from-invisibility-spec
#'add-to-invisibility-spec)
'(org-link))
(font-lock-update))
;;; go forward and backward in the tree, ~ cleanly ~ ;;; go forward and backward in the tree, ~ cleanly ~
;; https://stackoverflow.com/a/25201697/10756297 ;; https://stackoverflow.com/a/25201697/10756297