Files
dotfiles/dotfiles/emacs.d/kat-mode.org
2026-02-01 00:54:25 -08:00

177 lines
5.1 KiB
Org Mode

* evil
#+begin_src emacs-lisp
(use-package evil
:demand t
:config
(progn
(evil-mode +1)))
(use-package evil-leader
:demand t
:config
(global-evil-leader-mode))
(use-package evil-org
:demand t
:after (org evil-leader)
:config
(progn
(add-hook 'org-mode-hook 'evil-org-mode)))
#+end_src
This makes evil-mode play nice with org-fc
#+begin_src emacs-lisp
(use-package org-fc
:demand t
:config
(progn
(evil-define-minor-mode-key '(normal insert emacs) 'org-fc-review-flip-mode
(kbd "RET") 'org-fc-review-flip
(kbd "n") 'org-fc-review-flip
(kbd "s") 'org-fc-review-suspend-card
(kbd "q") 'org-fc-review-quit)
(evil-define-minor-mode-key '(normal insert emacs) 'org-fc-review-rate-mode
(kbd "a") 'org-fc-review-rate-again
(kbd "h") 'org-fc-review-rate-hard
(kbd "g") 'org-fc-review-rate-good
(kbd "e") 'org-fc-review-rate-easy
(kbd "s") 'org-fc-review-suspend-card
(kbd "q") 'org-fc-review-quit)))
#+end_src
* Appearance
#+begin_src emacs-lisp
(setq imalison:dark-theme 'dracula)
#+end_src
* org-mode
#+begin_src emacs-lisp
(setq imalison:org-whoami "Kat Huang")
(setq org-directory "~/org/") ; This is the directory where you want to save your Org files. Change as necessary.
(add-to-list 'org-capture-templates
'("j" "Journal" entry (file+datetree "~/org/daily-journal.org")
"* %?\nEntered on %U\n %i\n %a"))
(setq org-capture-templates
(append org-capture-templates
'(("r" "Weekly Review" entry
(file+datetree "~/org/weekly_reviews.org")
(file "~/org/weekly_review_template.org")))))
#+end_src
** Journal
#+begin_src emacs-lisp
(setq imalison:journal-template-filepath
(imalison:join-paths org-directory "templates" "daily-journal-template.org"))
#+end_src
** Insert a link to a task selected from agenda
#+begin_src emacs-lisp
(defun imalison:insert-link-to-agenda ()
(interactive)
(let ((all-tasks '()))
;; Step 1: Get the list of all org-agenda-files
(dolist (file (org-agenda-files))
;; Step 2: For each file, search for all TODO headings
(with-current-buffer (find-file-noselect file)
(org-map-entries
(lambda ()
(let ((heading (org-get-heading t t t t))
(marker (point-marker)))
(add-to-list 'all-tasks (cons heading marker)))))))
;; Step 3: Prompt the user to select a task from the list of all TODO headings
(let* ((selected-task (completing-read "Select a task: " all-tasks nil t))
(selected-marker (cdr (assoc selected-task all-tasks)))
(file (marker-buffer selected-marker))
(pos (marker-position selected-marker)))
;; Step 4: Insert a link to the selected task
(insert (format "[[file:%s::%d][%s]]" (buffer-file-name file) pos selected-task)))))
#+end_src
** org-babel
*** javascript
#+begin_src emacs-lisp
(use-package ob-js
:ensure nil
:after org
:config
(progn
(add-to-list 'org-babel-load-languages '(js . t))
(org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages)
(add-to-list 'org-babel-tangle-lang-exts '("js" . "js"))))
#+end_src
** Show daily scheduled tasks at a few points in the day
#+begin_src emacs-lisp
(use-package org-wild-notifier
:after org
:custom
((org-wild-notifier-day-wide-alert-times '("10am" "5pm" "10pm"))))
#+end_src
* kat forgets to save her files
#+begin_src emacs-lisp
(auto-save-visited-mode +1)
#+end_src
* Display line numbers in programming modes
#+begin_src emacs-lisp
(defun imalison:enable-display-line-numbers-mode ()
(display-line-numbers-mode +1))
(add-hook 'prog-mode-hook 'imalison:enable-display-line-numbers-mode)
#+end_src
* Disable autoflake
#+begin_src emacs-lisp
(use-package apheleia
:demand t
:config
(progn
(setf (alist-get 'python-mode apheleia-mode-alist)
'(isort black))
(setf (alist-get 'python-ts-mode apheleia-mode-alist)
(alist-get 'python-mode apheleia-mode-alist))))
#+end_src
* Packages
#+begin_src emacs-lisp
(use-package org-drill)
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
#+end_src
* Disable wild notifactions
#+begin_src emacs-lisp
(setq org-wild-notifier-day-wide-alert-times nil)
#+end_src
* Swift
#+begin_src emacs-lisp
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
(unless (package-installed-p 'swift-mode)
(package-refresh-contents)
(package-install 'swift-mode))
(unless (package-installed-p 'lsp-mode)
(package-refresh-contents)
(package-install 'lsp-mode))
;; Swift Mode
(require 'swift-mode)
(add-to-list 'auto-mode-alist '("\\.swift\\'" . swift-mode))
;; LSP Mode
(require 'lsp-mode)
(add-hook 'swift-mode-hook #'lsp)
;; Set the path to SourceKit-LSP if it's not in your PATH
(setq lsp-sourcekit-executable "/path/to/sourcekit-lsp")
;; Optional: Set the path to your Swift toolchain if necessary
(setq lsp-sourcekit-executable-args '("-toolchain" "/path/to/swift-toolchain"))
#+end_src