summaryrefslogtreecommitdiffhomepage
path: root/custom/jao-custom-org.el
diff options
context:
space:
mode:
Diffstat (limited to 'custom/jao-custom-org.el')
-rw-r--r--custom/jao-custom-org.el101
1 files changed, 71 insertions, 30 deletions
diff --git a/custom/jao-custom-org.el b/custom/jao-custom-org.el
index 4d2e622..d44bf95 100644
--- a/custom/jao-custom-org.el
+++ b/custom/jao-custom-org.el
@@ -1,7 +1,7 @@
;; -*- lexical-binding: t -*-
;;; General configuration
-(defvar jao-org-dir (expand-file-name "~/doc/org"))
+(defvar jao-org-dir (expand-file-name "org" jao-doc-dir))
(use-package org
:ensure t
@@ -22,7 +22,6 @@
org-enforce-todo-dependencies t
org-fast-tag-selection-single-key 'expert
org-insert-heading-respect-content nil ;; for C-RET
- ;; org-list-demote-modify-bullet '(("+" . "-") ("-" . "+") ("*" . "+"))
org-link-frame-setup
'((gnus . (lambda (&optional x) (jao-open-gnus-frame)))
(file . find-file-other-window))
@@ -30,6 +29,8 @@
org-modules '(bibtex info eww eshell git-link)
org-odd-levels-only t
org-outline-path-complete-in-steps nil
+ org-persist-directory (expand-file-name "cache/org-persist"
+ user-emacs-directory)
org-refile-allow-creating-parent-nodes 'confirm
org-refile-targets '((nil :maxlevel . 5)
(org-agenda-files :maxlevel . 5))
@@ -51,46 +52,66 @@
org-gnus-prefer-web-links nil))
;;; Agenda
+(defun jao-org-agenda-fmt-date (date)
+ (org-agenda-format-date-aligned date))
+
(setq org-agenda-custom-commands
- '(("j" agenda "" ((org-agenda-ndays 14)
- (org-agenda-overriding-header " ")))
+ '(("j" agenda "" ((org-agenda-overriding-header "Agenda \n")
+ (org-agenda-ndays-to-span 14)))
("w" todo "WAITING" nil)
("W" agenda "" ((org-agenda-ndays 21))))
org-agenda-files (mapcar (lambda (f)
(expand-file-name f jao-org-dir))
- '("inbox.org" "bigml.org"))
+ '("inbox.org"))
org-agenda-block-separator " "
org-agenda-breadcrumbs-separator "•"
org-agenda-current-time-string "•" ;; "*"
- ;; '((daily today require-timed)
- ;; (800 1000 1200 1400 1600 1800 2000) "" "·")
+ org-agenda-format-date #'jao-org-agenda-fmt-date
org-agenda-hide-tags-regexp ".*"
org-agenda-include-diary t
org-agenda-include-inactive-timestamps t
org-agenda-inhibit-startup nil
+ org-agenda-prefix-format
+ '((agenda . " %i %?-12t% s")
+ (todo . " %i %-12:c")
+ (tags . " %i %-12:c")
+ (search . " %i %-12:c"))
org-agenda-restore-windows-after-quit t
org-agenda-show-all-dates t
org-agenda-skip-deadline-if-done t
- org-agenda-skip-scheduled-if-done nil
+ org-agenda-skip-scheduled-if-done t
+ org-agenda-skip-timestamp-if-done t
+ org-agenda-skip-timestamp-if-deadline-is-shown t
+ org-agenda-skip-scheduled-if-deadline-is-shown t
org-agenda-span 14
- org-agenda-start-on-weekday nil
- org-agenda-time-grid '((daily require-timed) () "" "·")
+ ;; org-agenda-start-on-weekday nil
+ ;; ;; org-agenda-time-grid '((daily require-timed) () "" "·")
+ ;; '((daily today require-timed)
+ ;; (800 1000 1200 1400 1600 1800 2000) "" "·")
org-agenda-window-setup 'current-window)
(defun jao-org-agenda ()
(interactive)
- (org-agenda nil "j"))
+ (org-agenda nil "j")
+ (jao-org-agenda-hook))
-(defun jao-org-agenda-hook ()
- (setq-local cursor-in-non-selected-windows nil))
-
-(add-hook 'org-agenda-mode-hook #'jao-org-agenda-hook)
+(defun jao-org-agenda-hook (&optional w)
+ (when-let* ((w (or w (get-buffer-window "*Org Agenda*"))))
+ (set-window-margins w 2 1)
+ (with-current-buffer (window-buffer w)
+ (setq-local cursor-in-non-selected-windows nil
+ line-spacing 0.2))))
(add-to-list 'display-buffer-alist
- '("\\*Org Agenda\\*"
+ '((major-mode . org-agenda-mode)
(display-buffer-reuse-window)
- (body-function . (lambda (w) (set-window-margins w 2 1)))))
+ (window-parameters (mode-line-format . none))
+ (body-function . jao-org-agenda-hook)))
+(add-to-list 'display-buffer-alist
+ '("inbox\\.org"
+ (display-buffer-reuse-window)
+ (window-parameters (mode-line-format . none))))
;;; Capture templates
(setq org-capture-templates
@@ -99,7 +120,7 @@
"* TODO %?\n %i%a" :prepend t)
("r" "REPLY" entry
(file+headline "inbox.org" "Todo")
- "* REPLY %:subject%?\n %t\n %i%a" :prepend t)
+ "* REPLY %a\n %t\n %?" :prepend t)
("a" "Appointment" entry
(file+olp "inbox.org" "Appointments")
"* %^T %?\n %a" :time-prompt t)
@@ -109,9 +130,11 @@
;;; MIME and file apps
(setq org-file-apps
- '((system . mailcap)
- (".*\\.djvu" . system)
- (t . emacs)))
+ (jao-d-l
+ org-file-apps-macos
+ '((system . mailcap)
+ (".*\\.djvu" . system)
+ (t . emacs))))
;;; Appearance
(use-package org-appear
@@ -140,10 +163,9 @@
(use-package org-fragtog
:after org
:ensure t
+ :demand t
:hook ((org-mode . org-fragtog-mode)))
-(require 'org-fragtog)
-
(setq org-format-latex-options
`(:foreground default
:background
@@ -160,6 +182,9 @@
(require 'ox-latex)
+;;; Export (org)
+(require 'ox-org)
+
;;; Export (minted and pandoc)
(setq org-latex-listings 'minted
org-latex-packages-alist '(("" "minted"))
@@ -167,10 +192,6 @@
'("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
-;; (use-package ox-pandoc
-;; :after org
-;; :ensure t)
-
;;; Babel and literate programming
(setq org-src-window-setup 'other-window) ;; current-window
(require 'org-tempo nil t) ;; <s TAB for 9.2 and later
@@ -192,9 +213,12 @@
(python . t)
(scheme .t)
(shell . t)
+ (C . t)
;; (prolog . t)
))
+(jao-define-attached-buffer "\\*Org Src\\( .*\\)?\\*" 0.5)
+
;;; Org cliplink (link from clipboard)
(use-package org-cliplink
:ensure t
@@ -275,7 +299,12 @@
(define-key doc-view-mode-map (kbd "C-c o") #'jao-org-pdf-goto-org)
(define-key doc-view-mode-map (kbd "C-c O") #'jao-org-pdf-goto-org*))
-;; eldoc
+;;;; mac links
+(jao-when-darwin
+ (use-package org-mac-link
+ :ensure t))
+
+;;; eldoc
(defun jao-org-eldoc--hook ()
(set (make-local-variable 'eldoc-documentation-function)
'jao-org-link-at-point)
@@ -290,6 +319,15 @@
(org-show-subtree))))
(add-hook 'org-mode-hook 'jao-org--show-if-hidden t)
+;;; jao-org-focus
+(use-package jao-org-focus
+ :commands (jao-org-focus org-focus-mode)
+ :after org
+ :config
+ (with-eval-after-load "jao-custom-completion"
+ (jao-consult-add-buffer-source 'jao-org-focus-consult-buffer-source))
+ :bind ((:map org-mode-map (("C-M-o" . jao-org-focus)))))
+
;;; Keybindings
(define-key mode-specific-map [?a] 'org-agenda)
(define-key org-mode-map "\C-cv" 'jao-org-copy-link-at-point)
@@ -298,7 +336,9 @@
(define-key org-mode-map "\C-cE" 'jao-insert-eww-link)
(define-key org-mode-map "\C-cW" 'jao-insert-eww-link)
(define-key org-mode-map "\C-c'" 'org-edit-src-code)
-(define-key org-mode-map "\C-cO" 'outline-hide-other)
+(define-key org-mode-map (kbd "C-c O") 'org-toggle-narrow-to-subtree)
+(define-key org-mode-map (kbd "C-x C-n") 'org-next-link)
+(define-key org-mode-map (kbd "C-x C-p") 'org-previous-link)
(global-set-key "\C-cr" 'org-capture)
(global-set-key "\C-c\C-l" 'org-store-link)
;; (global-set-key "\C-cL" 'org-insert-link-global)
@@ -306,7 +346,8 @@
(jao-transient-major-mode+ org
["Links"
- ("le" "insert current eww link" jao-insert-eww-link)
+ ("le" "insert current eww link" jao-insert-eww-link :if jao-is-linux)
+ ("lm" "insert mac link" org-mac-link-get-link :if jao-is-darwin)
("lf" "insert link from clipboard" org-cliplink)
("lc" "copy link at point" jao-org-copy-link-at-point)])