forked from colonelpanic/dotfiles
4.7 KiB
4.7 KiB
evil
(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)))
This makes evil-mode play nice with org-fc
(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)))
Appearance
(setq imalison:dark-theme 'dracula)
org-mode
(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")))))
Daily Journal Entries
(defun imalison:journal-filepath-for-date (&optional date)
(interactive (list (org-read-date)))
(let ((date-str (or date (format-time-string "%Y-%m-%d"))))
(imalison:join-paths
org-directory "journal" (concat date-str ".org"))))
(defun imalison:open-todays-org-journal ()
(interactive)
(imalison:open-org-journal (format-time-string "%Y-%m-%d")))
(defun imalison:get-journal-template ()
(with-temp-buffer
(insert-file-contents (imalison:join-paths org-directory "templates" "daily-journal-template.org"))
(buffer-string)))
(defun imalison:open-org-journal (&optional date)
(interactive (list (org-read-date nil nil nil "Select a date:")))
(let* ((filepath (imalison:journal-filepath-for-date date))
(file-existed (file-exists-p filepath))
(date-str (or date (format-time-string "%Y-%m-%d")))
(time-vals (append '(0 0 0) (nthcdr 3 (parse-time-string date-str))))
(original-format-time-string (symbol-function 'format-time-string)))
(find-file filepath)
(when (not file-existed)
(cl-letf (((symbol-function 'format-time-string)
(lambda (format-string &optional _time _universal)
(funcall original-format-time-string format-string (apply #'encode-time time-vals)))))
(insert (org-capture-fill-template (imalison:get-journal-template)))))))
(bind-key "C-c j" 'imalison:open-todays-org-journal)
Insert a link to a task selected from agenda
(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)))))
org-babel
javascript
(use-package ob-js
:straight 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"))))
kat forgets to save her files
(auto-save-visited-mode +1)
Display line numbers in programming modes
(defun imalison:enable-display-line-numbers-mode ()
(display-line-numbers-mode +1))
(add-hook 'prog-mode-hook 'imalison:enable-display-line-numbers-mode)