137 lines
4.7 KiB
EmacsLisp
137 lines
4.7 KiB
EmacsLisp
(use-package org
|
|
:init
|
|
(setq fill-column 80)
|
|
(require 'org-protocol)
|
|
:custom
|
|
(org-startup-folded 'fold)
|
|
(org-startup-indented f)
|
|
(org-startup-indented nil)
|
|
(org-agenda-files '("~/roam/" "~/orgzly~"))
|
|
(org-ellipsis "⤵")
|
|
(org-pretty-entities t)
|
|
(org-hide-emphasis-markers t)
|
|
(org-agenda-block-separator "")
|
|
(org-fontify-whole-heading-line t)
|
|
(org-fontify-done-headline t)
|
|
(org-fontify-quote-and-verse-blocks t)
|
|
(prettify-symbols-alist '(("#+BEGIN_SRC" . "λ")
|
|
("#+END_SRC" . "λ")
|
|
("#+begin_src" . "λ")
|
|
("#+end_src" . "λ")))
|
|
(org-babel-python-command "python3")
|
|
(org-src-preserve-indentation t)
|
|
:config
|
|
(org-babel-do-load-languages
|
|
'org-babel-load-languages
|
|
'((python . t)))
|
|
:hook
|
|
((org-mode . auto-fill-mode) ;refill-mode breaks org headings
|
|
;; (org-mode . org-num-mode)
|
|
;; (org-mode . (lambda ()
|
|
;; (dolist (face '((org-level-1 1.5)
|
|
;; (org-level-2 1.4)
|
|
;; (org-level-3 1.3)
|
|
;; (org-level-4 1.2)
|
|
;; (org-level-5 1.1)))
|
|
;; (set-face-attribute (car face) nil :weight 'semi-bold :height (cadr face)))))
|
|
(org-mode . prettify-symbols-mode)))
|
|
|
|
(use-package org-fragtog
|
|
:custom
|
|
(org-format-latex-options (plist-put org-format-latex-options :scale 1.6))
|
|
:hook
|
|
((org-mode . org-fragtog-mode)))
|
|
|
|
(use-package org-download
|
|
:hook
|
|
((org-mode . (lambda () (setq-local org-download-image-dir "~/roam/images/")))))
|
|
|
|
(use-package org-superstar
|
|
:custom
|
|
(org-superstar-special-todo-items t)
|
|
:hook
|
|
(('org-mode . (lambda () (org-superstar-mode 1)))))
|
|
|
|
(use-package org-download
|
|
:hook
|
|
((org-mode . (lambda () (setq-local org-download-image-dir "~/roam/images/")))))
|
|
|
|
(use-package org-roam
|
|
:init
|
|
(setq org-roam-v2-ack t)
|
|
:custom
|
|
(org-roam-directory (file-truename "~/roam/"))
|
|
(org-roam-graph-executable "dot")
|
|
(org-roam-db-location (file-truename "roam/org-roam.db"))
|
|
(org-roam-node-display-template "${title:72} ${tags:10} ${backlinkscount:6}")
|
|
(org-roam-capture-templates
|
|
'(("d" "default" plain "\n%?" :target (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}") :unnarrowed t)))
|
|
:hook
|
|
((org-roam-mode . (lambda () (org-hide-properties))))
|
|
:bind (("C-c n l" . org-roam-buffer-toggle)
|
|
("C-c n f" . org-roam-node-find)
|
|
("C-c n g" . org-roam-graph)
|
|
("C-c n i" . org-roam-node-insert)
|
|
("C-c n I" . org-roam-node-insert-immediate)
|
|
("C-c n c" . org-roam-capture)
|
|
;; Dailies
|
|
("C-c n j" . org-roam-dailies-capture-today))
|
|
:config
|
|
(defun org-roam-node-insert-immediate (arg &rest args)
|
|
(interactive "P")
|
|
(let ((args (cons arg args))
|
|
(org-roam-capture-templates (list (append (car org-roam-capture-templates)
|
|
'(:immediate-finish t)))))
|
|
(apply #'org-roam-node-insert args)))
|
|
|
|
(defun org-hide-properties ()
|
|
"Hide all org-mode headline property drawers in buffer. Could be slow if it has a lot of overlays."
|
|
(interactive)
|
|
(save-excursion
|
|
(goto-char (point-min))
|
|
(while (re-search-forward
|
|
"^ *:properties:\n\\( *:.+?:.*\n\\)+ *:end:\n" nil t)
|
|
(let ((ov_this (make-overlay (match-beginning 0) (match-end 0))))
|
|
(overlay-put ov_this 'display "")
|
|
(overlay-put ov_this 'hidden-prop-drawer t))))
|
|
(put 'org-toggle-properties-hide-state 'state 'hidden))
|
|
|
|
(defun org-show-properties ()
|
|
"Show all org-mode property drawers hidden by org-hide-properties."
|
|
(interactive)
|
|
(remove-overlays (point-min) (point-max) 'hidden-prop-drawer t)
|
|
(put 'org-toggle-properties-hide-state 'state 'shown))
|
|
|
|
(defun org-toggle-properties ()
|
|
"Toggle visibility of property drawers."
|
|
(interactive)
|
|
(if (eq (get 'org-toggle-properties-hide-state 'state) 'hidden)
|
|
(org-show-properties)
|
|
(org-hide-properties)))
|
|
|
|
(cl-defmethod org-roam-node-directories ((node org-roam-node))
|
|
(if-let ((dirs (file-name-directory (file-relative-name (org-roam-node-file node) org-roam-directory))))
|
|
(format "(%s)" (car (f-split dirs)))
|
|
""))
|
|
|
|
(cl-defmethod org-roam-node-backlinkscount ((node org-roam-node))
|
|
(let* ((count (caar (org-roam-db-query
|
|
[:select (funcall count source)
|
|
:from links
|
|
:where (= dest $s1)
|
|
:and (= type "id")]
|
|
(org-roam-node-id node)))))
|
|
(format "[%d]" count)))
|
|
|
|
|
|
(org-roam-db-autosync-mode)
|
|
(require 'org-roam-protocol))
|
|
|
|
(use-package org-roam-ui
|
|
:after org-roam
|
|
:config (setq org-roam-ui-sync-theme t
|
|
org-roam-ui-follow t
|
|
org-roam-ui-update-on-save t
|
|
org-roam-ui-open-on-start t))
|
|
|
|
(provide 'config-org)
|