;;; $DOOMDIR/org-conf.el -*- lexical-binding: t; -*-
|
|
;;; org-conf.el<2> --- Description
|
|
|
|
;; Author: Yigit Colakoglu yigit@yigitcolakoglu.com
|
|
|
|
;; Copyright (C) Symbol’s value as variable is void: %Y, Yigit Colakoglu, all rights reserved.
|
|
|
|
;; This program is free software; you can redistribute it and/or modify
|
|
;; it under the terms of the GNU General Public License as published by
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
;; (at your option) any later version.
|
|
|
|
;; This program is distributed in the hope that it will be useful,
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
;; GNU General Public License for more details.
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
;;; Commentary:
|
|
;; This file contains the org-mode specific configuration for my emacs config
|
|
;;
|
|
|
|
;;; Code:
|
|
(setq org-export-with-section-numbers nil)
|
|
|
|
(setq org-agenda-files (directory-files org-directory t "\\.org$" t))
|
|
|
|
(setq org-display-remote-inline-images 'download)
|
|
(setq org-agenda-include-deadlines t)
|
|
(setq org-agenda-dim-blocked-tasks 'invisible)
|
|
(setq org-latex-packages-alist '(("margin=1in" "geometry" nil))) ;; adjusting the margins of latex output
|
|
(setq org-format-latex-options (plist-put org-format-latex-options :scale 2.5)) ;; making latex previews larger
|
|
(setq org-bullets-bullet-list '("·"))
|
|
(setq org-log-done 'time)
|
|
(setq org-tags-column -80)
|
|
(setq org-refile-targets (quote ((nil :maxlevel . 1))))
|
|
|
|
(setq org-todo-keywords '((sequence
|
|
"TODO"
|
|
"PROJ"
|
|
"NEXT(n)"
|
|
"PROG(p!)"
|
|
"WAIT(w@/!)"
|
|
"SOMEDAY"
|
|
"|"
|
|
"DONE(d)"
|
|
"CANCEL(c@)"
|
|
"DELEGATED(@)"
|
|
)
|
|
(sequence
|
|
"IDEA"
|
|
"GOAL"
|
|
"|"
|
|
"DUD(@)")
|
|
(sequence
|
|
"RD"
|
|
"RDING"
|
|
"RDNOTE"
|
|
"TMPDROP"
|
|
"|"
|
|
"DROP"
|
|
"FNSHED"
|
|
)
|
|
))
|
|
|
|
(setq org-fancy-priorities-list '("⚡" "⬆" "⬇" "☕"))
|
|
|
|
(setq org-caldav-url "https://drive.yigitcolakoglu.com/remote.php/dav/calendars/yigitcolakoglu")
|
|
(setq org-icalendar-timezone "Europe/Istanbul")
|
|
(setq org-caldav-calendars
|
|
'((:calendar-id "pcalendar" :files ("~/Documents/org/pcalendar.org")
|
|
:inbox "~/.local/share/pcalendar.org")))
|
|
|
|
;; Mappings
|
|
|
|
(map! :ne "SPC m a c" #'org-insert-clipboard-image)
|
|
|
|
(map! :map calc-mode-map
|
|
:after calc
|
|
:localleader
|
|
:desc "Embedded calc (toggle)" "e" #'calc-embedded)
|
|
(map! :map org-mode-map
|
|
:after org
|
|
:localleader
|
|
:desc "Embedded calc (toggle)" "E" #'calc-embedded)
|
|
(map! :map latex-mode-map
|
|
:after latex
|
|
:localleader
|
|
:desc "Embedded calc (toggle)" "e" #'calc-embedded)
|
|
(map! :map org-mode-map
|
|
:after org
|
|
:localleader
|
|
:desc "Outline" "O" #'org-ol-tree)
|
|
|
|
|
|
;; Org Superstar
|
|
;;
|
|
(setq org-superstar-remove-leading-stars t)
|
|
|
|
(setq org-capture-templates
|
|
`(
|
|
("t" "Todo" entry (file ,(concat org-directory "personal.org"))
|
|
"* TODO %? \n%U" :empty-lines 1)
|
|
("d" "Todo deadline" entry (file ,(concat org-directory "personal.org"))
|
|
"* TODO %? \nDEADLINE: %^T\n%U" :empty-lines 1)
|
|
("w" "Wait deadline" entry (file ,(concat org-directory "personal.org"))
|
|
"* WAIT %? \nDEADLINE: %^T\n%U" :empty-lines 1)
|
|
("r" "Reading List" entry (file+olp ,(concat org-directory "reading_list.org") "Catchall")
|
|
"* RD %? \n%U" :empty-lines 1)
|
|
("i" "Idea" entry (file ,(concat org-directory "personal.org"))
|
|
"* IDEA %? \n%U" :empty-lines 1)
|
|
("s" "Someday" entry (file+olp ,(concat org-directory "someday.org") "Catchall")
|
|
"* SOMEDAY %? \n%U" :empty-lines 1)
|
|
("e" "Event" entry (file ,(concat org-directory "personal.org"))
|
|
"* %? \nSCHEDULED: %^T\n%U" :empty-lines 1)
|
|
("c" "Cookbook" entry (file ,(concat org-directory "cookbook.org"))
|
|
"%(org-chef-get-recipe-from-url)" :empty-lines 1)
|
|
("C" "Manual Cookbook" entry (file ,(concat org-directory "cookbook.org"))
|
|
"* %^{Recipe title: }\n :PROPERTIES:\n :source-url:\n :servings:\n :prep-time:\n :cook-time:\n :ready-in:\n :END:\n** Ingredients\n %?\n** Directions\n\n")
|
|
("j" "Journal entry" entry (function org-journal-find-location)
|
|
"* NEXT %?\n%U" :empty-lines 1)
|
|
("k" "Journal sched entry" entry (function org-journal-find-location)
|
|
"* %? %^T\n%U" :empty-lines 1)
|
|
("m" "Morning Journal entry" entry (function org-journal-find-location)
|
|
"* Morning Entry
|
|
** Checklist
|
|
|
|
- [ ] Make bed
|
|
- [ ] Brush Teeth
|
|
- [ ] Cook something nice
|
|
- [ ] Read for 20 pages
|
|
- [ ] Take note of things I am looking forward to in journal
|
|
- [ ] Wash face
|
|
- plan tips:
|
|
- don't put mentally straining todos after working out or eating.
|
|
- mentally chill stuff includes:
|
|
- relaxing reading
|
|
- article reading
|
|
** Looking Forward To %?
|
|
** Day Plan
|
|
** Determinations :determ:" :empty-lines 1)
|
|
("n" "Night Journal entry" entry (function org-journal-find-location)
|
|
"* Today's Learnings\n* My Day\n%U")
|
|
))
|
|
|
|
|
|
;; Org Journal
|
|
(defun org-journal-find-location ()
|
|
;; Open today's journal, but specify a non-nil prefix argument in order to
|
|
;; inhibit inserting the heading; org-capture will insert the heading.
|
|
(org-journal-new-entry t)
|
|
;; Position point on the journal's top-level heading so that org-capture
|
|
;; will add the new entry as a child entry.
|
|
(goto-char (point-min)))
|
|
|
|
|
|
(set-face-attribute 'org-table nil :inherit 'fixed-pitch)
|
|
|
|
(set-face-attribute 'org-block nil :inherit 'fixed-pitch)
|
|
|
|
;; Refile taken from here: https://www.reddit.com/r/emacs/comments/4366f9/how_do_orgrefiletargets_work/
|
|
(setq org-refile-targets '((nil :maxlevel . 9)
|
|
(org-agenda-files :maxlevel . 9)))
|
|
(setq org-outline-path-complete-in-steps nil) ; Refile in a single go
|
|
(setq org-refile-use-outline-path t) ; Show full paths for refiling
|
|
(setq org-refile-allow-creating-parent-nodes (quote confirm))
|
|
(setq org-pretty-entities t)
|
|
|
|
(setq org-hide-emphasis-markers t)
|
|
(setq org-fontify-whole-heading-line t)
|
|
(setq org-fontify-done-headline t)
|
|
(setq org-fontify-quote-and-verse-blocks t)
|
|
(setq org-tags-column 0)
|
|
(setq org-src-fontify-natively t)
|
|
(setq org-edit-src-content-indentation 0)
|
|
(setq org-src-tab-acts-natively t)
|
|
(setq org-src-preserve-indentation t)
|
|
|
|
(setq org-list-demote-modify-bullet '(("+" . "-") ("-" . "+") ("*" . "+") ("1." . "a.")))
|
|
|
|
(setq org-log-done 'time)
|
|
|
|
(provide 'org-conf.el)
|
|
|
|
;; Embedded Calc
|
|
(defvar calc-embedded-trail-window nil)
|
|
(defvar calc-embedded-calculator-window nil)
|
|
|
|
(defadvice! calc-embedded-with-side-pannel (&rest _)
|
|
:after #'calc-do-embedded
|
|
(when calc-embedded-trail-window
|
|
(ignore-errors
|
|
(delete-window calc-embedded-trail-window))
|
|
(setq calc-embedded-trail-window nil))
|
|
(when calc-embedded-calculator-window
|
|
(ignore-errors
|
|
(delete-window calc-embedded-calculator-window))
|
|
(setq calc-embedded-calculator-window nil))
|
|
(when (and calc-embedded-info
|
|
(> (* (window-width) (window-height)) 1200))
|
|
(let ((main-window (selected-window))
|
|
(vertical-p (> (window-width) 80)))
|
|
(select-window
|
|
(setq calc-embedded-trail-window
|
|
(if vertical-p
|
|
(split-window-horizontally (- (max 30 (/ (window-width) 3))))
|
|
(split-window-vertically (- (max 8 (/ (window-height) 4)))))))
|
|
(switch-to-buffer "*Calc Trail*")
|
|
(select-window
|
|
(setq calc-embedded-calculator-window
|
|
(if vertical-p
|
|
(split-window-vertically -6)
|
|
(split-window-horizontally (- (/ (window-width) 2))))))
|
|
(switch-to-buffer "*Calculator*")
|
|
(select-window main-window))))
|
|
|
|
;;; ol-man.el - Support for links to man pages in Org mode
|
|
;;; https://www.gnu.org/software/emacs/manual/html_node/org/Adding-Hyperlink-Types.html
|
|
(org-link-set-parameters "man"
|
|
:follow #'org-man-open
|
|
:export #'org-man-export
|
|
:store #'org-man-store-link)
|
|
|
|
(defcustom org-man-command 'man
|
|
"The Emacs command to be used to display a man page."
|
|
:group 'org-link
|
|
:type '(choice (const man) (const woman)))
|
|
|
|
(defun org-man-open (path _)
|
|
"Visit the manpage on PATH.
|
|
PATH should be a topic that can be thrown at the man command."
|
|
(funcall org-man-command path))
|
|
|
|
(defun org-man-store-link ()
|
|
"Store a link to a man page."
|
|
(when (memq major-mode '(Man-mode woman-mode))
|
|
;; This is a man page, we do make this link.
|
|
(let* ((page (org-man-get-page-name))
|
|
(link (concat "man:" page))
|
|
(description (format "Man page for %s" page)))
|
|
(org-link-store-props
|
|
:type "man"
|
|
:link link
|
|
:description description))))
|
|
|
|
(defun org-man-get-page-name ()
|
|
"Extract the page name from the buffer name."
|
|
;; This works for both `Man-mode' and `woman-mode'.
|
|
(if (string-match " \\(\\S-+\\)\\*" (buffer-name))
|
|
(match-string 1 (buffer-name))
|
|
(error "Cannot create link to this man page")))
|
|
|
|
(defun org-man-export (link description format _)
|
|
"Export a man page link from Org files."
|
|
(let ((path (format "http://man.he.net/?topic=%s§ion=all" link))
|
|
(desc (or description link)))
|
|
(pcase format
|
|
(`html (format "<a target=\"_blank\" href=\"%s\">%s</a>" path desc))
|
|
(`latex (format "\\href{%s}{%s}" path desc))
|
|
(`texinfo (format "@uref{%s,%s}" path desc))
|
|
(`ascii (format "%s (%s)" desc path))
|
|
(t path))))
|
|
|
|
;;; org-conf.el<2> ends here.
|