You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

6.2 KiB

Doc - Org

Package

Define Org document package.

  (use-package emacs
    :after uno-doc
    :config
    (provide 'uno-doc-org))

Org

  (use-package org
    :after uno-doc-org
    :custom
    (org-adapt-indentation nil)
    (org-ellipsis " ▼")
    (org-hide-emphasis-markers t)
    (org-src-window-setup 'current-window)
    (org-todo-keywords '((sequence "TODO" "LIVE" "DONE")))
    :hook
    (org-babel-after-execute . uno/doc/org/after-execute-inline-images)
    (org-mode . toggle-truncate-lines)
    (org-mode . uno/doc/org/theme)
    :general
    (uno-mode-leader-define
      :keymaps 'org-mode-map
      uno-mode-leader-key '(org-ctrl-c-ctrl-c :which-key "C-c C-c")
      "e" '(org-export-dispatch :which-key "Export")
      "i" '(:ignore t :which-key "Insert")
      "il" '(org-insert-link :which-key "Set link")
      "it" '(org-set-tags-command :which-key "Set tags")
      "p" '(org-present :which-key "Org present")
      "'" '(org-edit-special :which-key "Edit special"))
    (uno-mode-leader-define
      :definer 'minor-mode
      :keymaps 'org-src-mode
      uno-mode-leader-key '(org-edit-src-exit :which-key "Finish")
      "k" '(org-edit-src-abort :which-key "Cancel"))
    (uno-mode-leader-define
      :definer 'minor-mode
      :keymaps 'org-capture-mode
      uno-mode-leader-key '(org-capture-finalize :which-key "Finish")
      "k" '(org-capture-kill :which-key "Cancel")
      "w" '(org-capture-refile :which-key "Refile"))
    :init
    (defun uno/doc/org/after-execute-inline-images ()
      "Ensure inline images remain visible after org babel execute."
      (when org-inline-image-overlays
        (org-redisplay-inline-images)))
    (defun uno/doc/org/theme ()
      "Customize face heights for org-mode."
      (when (display-graphic-p)
        (custom-theme-set-faces
          'user
          '(org-drawer ((t (:inherit fixed-pitch))))
          '(org-property-value ((t (:inherit fixed-pitch))))
          '(org-special-keyword ((t (:inherit fixed-pitch))))
          '(org-document-title ((t (:height 2.05))))
          '(org-level-1 ((t (:inherit outline-1 :height 1.90))))
          '(org-level-2 ((t (:inherit outline-2 :height 1.75))))
          '(org-level-3 ((t (:inherit outline-3 :height 1.60))))
          '(org-level-4 ((t (:inherit outline-4 :height 1.45))))
          '(org-level-5 ((t (:inherit outline-5 :height 1.30))))
          '(org-level-6 ((t (:inherit outline-6 :height 1.15)))))))
    :config
    (require 'ox-beamer)
    (require 'ox-groff)
    (require 'ox-md))

  (use-package org-superstar
    :if (display-graphic-p)
    :after (uno-doc-org org)
    :custom
    (org-hide-leading-stars nil)
    (org-superstar-leading-bullet "")
    (org-superstar-special-todo-items t)
    (org-superstar-todo-bullet-alist '(("TODO" . 9744)
                                       ("LIVE" . 9746)
                                       ("DONE" . 9745)))
    :hook
    (org-mode . org-superstar-mode))

Presentation

  (use-package org-present
    :after uno-doc-org
    :hook
    (org-present-mode . org-display-inline-images)
    (org-present-mode . org-present-big)
    (org-present-mode . org-present-hide-cursor)
    (org-present-mode . org-present-read-only)
    (org-present-mode . uno/doc/org/present)
    (org-present-mode-quit . blink-cursor-mode)
    (org-present-mode-quit . fringe-mode)
    (org-present-mode-quit . org-present-read-write)
    (org-present-mode-quit . org-present-show-cursor)
    (org-present-mode-quit . org-present-small)
    (org-present-mode-quit . uno/doc/org/present-quit)
    :general
    (uno-define
      :keymaps 'org-present-mode-keymap
      "h" 'org-present-prev
      "l" 'org-present-next
      "q" 'org-present-quit
      "<left>" 'org-present-prev
      "<right>" 'org-present-next)
    :init
    (defun uno/doc/org/present ()
      "Start up org-present."
      (set-window-margins (get-buffer-window) 1 1)
      (setq-local header-line-format " ")
      (blink-cursor-mode -1)
      (fringe-mode -1))
    (defun uno/doc/org/present-quit ()
      "Clean up after exiting org-present."
      (set-window-margins (get-buffer-window) 0 0)
      (setq-local header-line-format nil)
      (unless org-startup-with-inline-images
        (org-remove-inline-images))))

  (use-package org-present
    :after (uno-doc-org evil)
    :hook
    (org-present-mode . evil-motion-state)
    (org-present-mode-quit . evil-normal-state))

  (use-package hide-mode-line
    :after (uno-doc-org org-present)
    :hook
    (org-present-mode . turn-on-hide-mode-line-mode)
    (org-present-mode-quit . turn-off-hide-mode-line-mode))

Roam

  (use-package org-roam
    :after (uno-doc-org org)
    :custom
    (org-roam-capture-templates
     '(("d" "default" plain "%?"
        :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org"
                           "#+TITLE: ${title}\n#+STARTUP: showall\n\n")
        :unnarrowed t)))
    (org-roam-complete-everywhere t)
    (org-roam-db-location (uno-cache-path "org-roam/org-roam.db"))
    (org-roam-directory "~/Roam")
    :general
    (uno-leader-define
      "r" '(:ignore t :which-key "Org Roam")
      "rd" '(org-roam-dailies-capture-today :which-key "Capture today")
      "rf" '(org-roam-node-find :which-key "Find node"))
    (uno-mode-leader-define
      :keymaps 'org-mode-map
      "ir" '(org-roam-node-insert :which-key "Add Org Roam link")
      "r" '(org-roam-buffer-list :which-key "Roam backlinks"))
    :init
    (setq org-roam-v2-ack t)
    :config
    (require 'org-roam-dailies)
    (mkdir (expand-file-name org-roam-dailies-directory org-roam-directory) t)
    (uno/handle-side-window "\\*org-roam\\*")
    (org-roam-setup))

Evil Integration

  (use-package evil-org
    :after (uno-doc-org evil org)
    :custom
    (evil-org-use-additional-insert t)
    (evil-org-key-theme '(textobjects navigation todo additional))
    :hook
    (org-mode . evil-org-mode)
    (org-src-mode . evil-normalize-keymaps)
    :config
    (evil-org-set-key-theme))

  (use-package evil-org
    :after (uno-doc-org evil org-agenda)
    :config
    (require 'evil-org-agenda)
    (evil-org-agenda-set-keys))