;;; $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 . ;;; 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 "%s" 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.