This commit is contained in:
Caleb G 2025-06-02 15:37:22 -07:00
commit 2021acf418

258
init.el Normal file
View File

@ -0,0 +1,258 @@
(add-to-list 'default-frame-alist '(fullscreen . maximized))
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
;; Basic UI cleanup
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
;; Save customization info elsewhere
(setq custom-file "~/.config/emacs-custom.el")
(when (file-exists-p custom-file)
(load custom-file))
;; Some Global Settings
(show-paren-mode 1)
(global-hl-line-mode t)
(global-auto-revert-mode t)
(global-prettify-symbols-mode t)
(add-hook 'before-save-hook #'delete-trailing-whitespace)
(setf user-full-name "Caleb Gossler"
user-mail-address "caleb.gossler@gmail.com"
calendar-latitude 47.4
calendar-longitude -122.3
calendar-location-name "Seattle, WA"
indent-tabs-mode nil
ring-bell-function 'ignore
vc-follow-symlinks t
confirm-kill-emacs 'y-or-n-p
diray-file "~/org/diary"
backup-directory-alist '(("." . "~/.emacs.d/backup"))
abbrev-file-name "~/org/abbrev_defs"
backup-directory-alist `(("." . "~/.emacs.d/backups"))
compilation-scroll-output t)
(use-package doom-themes
:ensure t
:config
;; Global settings (defaults)
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t) ; if nil, italics is universally disabled
(load-theme 'doom-one t)
;; Enable flashing mode-line on errors
(doom-themes-visual-bell-config)
;; Corrects (and improves) org-mode's native fontification.
(doom-themes-org-config))
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1)
:config
(setq doom-modeline-icon nil))
(use-package flyspell
:config
(setf ispell-personal-dictionary "~/org/dictionary"))
(use-package markdown-mode :ensure t)
(use-package rg :ensure t)
(use-package org
:after flyspell
:hook
(org-mode . visual-line-mode)
(org-mode . org-display-inline-images)
:config
(setq org-startup-indented t
org-hide-leading-stars t
org-startup-folded 'content
org-ellipsis ""
org-agenda-files '("~/org/agenda")
org-agenda-include-diary t
org-refile-targets '((org-agenda-files :maxlevel . 2))
org-startup-indented t
org-agenda-span 'day
org-agenda-todo-ignore-scheduled 'future
org-log-into-drawer t
org-clock-idle-time 10
org-return-follows-link t
org-special-ctrl-a/e t
org-pretty-entities t
org-pretty-entities-include-sub-superscripts t
org-agenda-skip-scheduled-if-deadline-is-shown t
org-log-done 'time
org-latex-create-formula-image-program 'dvipng
org-capture-templates
'(("c" "Clock into new")
("ct" "Task" entry (file+headline "~/org/agenda/inbox.org" "Inbox")
"* TODO %?\nSCHEDULED: %T Created: %U\n Context: %a\n %i" :clock-in t :clock-keep t)
("cm" "Meeting" entry (file+datetree "~/org/agenda/meetings.org")
"* %?\n** Details\n + *Agenda*:\n + *Attendees*:\n" :clock-in t :clock-keep t)
("t" "New Task" entry (file+headline "~/org/agenda/inbox.org" "Inbox")
"* TODO %?\n Created: %U\n Context: %a\n %i")
("j" "New Journal Entry" entry (file+datetree "~/org/agenda/journal.org.gpg")
"* %? %^g\n\nPosted At: %U" :empty-lines-after 1 :kill-buffer t)
("l" "New Log Entry" entry (file+datetree "~/org/agenda/log.org.gpg")
"* %? \nPosted At: %U" :empty-lines-after 1 :kill-buffer t)
("r" "Random" entry (file "~/org/agenda/random.org.gpg")
"* %?\nCreated At: %U" :empty-lines-after 1 :kill-buffer t)
("n" "Add Note to Clocked in Entry" item (clock)
"+ %i%? (%<%r>)")
("b" "Add Checkbox to Clocked in Entry" item (clock)
"+ [ ] %? (%<%r>)" :prepend t)
("a" "Add Task to Clocked in Entry" entry (clock)
"* TODO %?" :prepend t))
org-agenda-custom-commands
'(("a" "Combined Agenda"
((agenda)
(tags-todo "+inbox" ((org-agenda-overriding-header "Inbox:")))))
("t" "Study"
((agenda)
(todo "READING" ((org-agenda-overriding-header "Currently Reading")))
(todo "PAUSED" ((org-agenda-overriding-header "On Hold")))
(todo "TO-WATCH" ((org-agenda-overriding-header "Videos to Watch")))
(todo "RESEARCH"))
((org-agenda-category-filter-preset '("+study"))))
("w" "Work"
((agenda)
(todo "BLOCKED" ((org-agenda-overriding-header "Blocked:")))
(tags-todo "+inbox" ((org-agenda-overriding-header "Inbox:")))
(todo "REVIEW" ((org-agenda-overriding-header "Code Reviews:")))
(todo "WAITING" ((org-agenda-overriding-header "Waiting:")))
(todo "IN-PROGRESS" ((org-agenda-overriding-header "In Progress:")))
(todo "TODO" ((org-agenda-overriding-header "Backlog:")))
(tags "officehours" ((org-agenda-overriding-header "Office Hours:")))
(tags "pullrequest" ((org-agenda-overriding-header "Pull Requests:"))))
((org-agenda-category-filter-preset '("+work"))))) )
:bind
("\C-ca" . org-agenda)
("\C-cc" . org-capture)
("\C-cb" . org-iswitchb)
("\C-cl" . org-store-link))
(use-package org-drill
:after org
:commands (org-drill org-drill-all org-drill-again)
:ensure
:config
(setq org-drill-spaced-repetition-algorithm 'sm5
org-drill-learn-fraction 0.3
org-drill-add-random-noise-to-intervals-p t
org-drill-leech-method 'warn))
(defun org-drill-all ()
(interactive)
(org-drill
(directory-files-recursively "~/org/notes/" "\.org$")))
(when (eq system-type 'gnu/linux)
(use-package pdf-tools
:ensure t
:magic ("%PDF" . pdf-view-mode)
:config
(pdf-tools-install :no-query)))
(use-package yasnippet
:ensure t
:config
(setq yas-snippet-dirs '("~/.emacs.d/snippets"))
(yas-global-mode 1))
(use-package zenburn-theme
:ensure t
:config (load-theme 'zenburn t))
(use-package magit
:ensure t
:commands (magit-status magit-get-current-branch)
:bind (("C-x g" . magit-status)))
(use-package multiple-cursors
:ensure t
:bind (("C->" . mc/mark-next-like-this)
("C-<" . mc/mark-previous-like-this)
("C-c C-<" . mc/mark-all-like-this)))
(use-package ivy
:ensure t
:config (ivy-mode 1)
(setq ivy-use-virtual-buffers t
ivy-count-format "(%d/%d) "
enable-recursive-minibuffers t
magit-completing-read-function 'ivy-completing-read))
(use-package counsel
:ensure t
:bind (("C-s" . swiper-isearch))
:config
(setq swiper-include-line-number-in-search t))
(use-package projectile
:ensure
:init (projectile-mode +1)
:config
(setq project-find-functions '(project-projectile))
:bind-keymap
("C-c p" . projectile-command-map)
:bind
("C-x f" . projectile-find-file)
("C-c s" . projectile-ripgrep)
("C-c t" . eglot-find-typeDefinition))
(use-package sharper
:ensure t
:bind
("C-c n" . sharper-main-transient))
(use-package corfu
:ensure t
:pin gnu
:init
(global-corfu-mode)
:config
(setq corfu-min-width 250
corfu-min-height 750
corfu-count 20
corfu-auto t
corfu-cycle t
corfu-separator ?\s
corfu-preview-current "insert"
corfu-scroll-margin 25
;; enable corfu on TAB
tab-always-indent 'complete
;; shows documentation after `corfu-popupinfo-delay'
corfu-popupinfo-delay '(1.25 . 0.5))
(corfu-popupinfo-mode 1)
;; Sort by input history (no need to modify `corfu-sort-function').
(with-eval-after-load 'savehist
(corfu-history-mode 1)
(add-to-list 'savehist-additional-variables 'corfu-history)))
(use-package fsharp-mode
:defer t
:ensure t
:config
(remove-hook 'project-find-functions #'fsharp-mode-project-root))
(use-package eglot-fsharp
:ensure t
:after fsharp-mode
:config
(add-hook 'fsharp-mode-hook #'eglot-ensure)
(setq eglot-fsharp-server-args '("--use-fcs-transparent-compiler" "--project-graph-enabled")
eglot-report-progress nil
eglot-ignored-server-capabilities '(:inlayHintProvider)))
(use-package which-key
:ensure t
:config (which-key-mode))