diff options
Diffstat (limited to 'custom/jao-custom-org.el')
| -rw-r--r-- | custom/jao-custom-org.el | 101 |
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)]) |
