summaryrefslogtreecommitdiffhomepage
path: root/org.org
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2021-02-02 05:18:42 +0000
committerjao <jao@gnu.org>2021-02-02 05:18:42 +0000
commit8b6a44f89550665cce3ec7c7ffab7a9cecf59a4f (patch)
tree36ef996ec166813b39b119f51318a16bb475092e /org.org
parent771abb84830678455de4625ac7f082d8100f0ea0 (diff)
downloadelibs-8b6a44f89550665cce3ec7c7ffab7a9cecf59a4f.tar.gz
elibs-8b6a44f89550665cce3ec7c7ffab7a9cecf59a4f.tar.bz2
configuration orgs
Diffstat (limited to 'org.org')
-rw-r--r--org.org326
1 files changed, 326 insertions, 0 deletions
diff --git a/org.org b/org.org
new file mode 100644
index 0000000..254ee39
--- /dev/null
+++ b/org.org
@@ -0,0 +1,326 @@
+* General configuration
+ #+BEGIN_SRC emacs-lisp
+ (use-package org
+ :ensure t
+ :init
+ (setq org-catch-invisible-edits 'smart
+ org-complete-tags-always-offer-all-agenda-tags t
+ org-completion-use-ido nil
+ org-cycle-separator-lines 0 ;; no blank lines when all colapsed
+ org-deadline-warning-days 14
+ org-directory jao-notes-dir
+ org-default-notes-file (expand-file-name "inbox.org" org-directory)
+ org-ellipsis " .." ;; ↴
+ org-email-link-description-format "Email %c: %s"
+ org-enforce-todo-dependencies t
+ org-extend-today-until 0
+ org-fast-tag-selection-single-key 'expert
+ org-hide-emphasis-markers t
+ org-hide-leading-stars t
+ ;; org-list-demote-modify-bullet '(("+" . "-") ("-" . "+") ("*" . "+"))
+ org-link-frame-setup
+ '((gnus . (lambda (&optional x) (jao-open-gnus-frame)))
+ (file . find-file-other-window))
+ org-log-done nil
+ org-modules '(bbdb bibtex gnus info w3m)
+ org-odd-levels-only t
+ org-outline-path-complete-in-steps nil
+ org-refile-allow-creating-parent-nodes 'confirm
+ org-refile-targets '((nil :maxlevel . 5)
+ (org-agenda-files :maxlevel . 5))
+ org-refile-use-outline-path 'file
+ org-return-follows-link t
+ org-reverse-note-order t
+ org-special-ctrl-a/e t
+ org-src-fontify-natively t
+ org-startup-folded t
+ org-tag-alist nil
+ org-tags-column -75
+ org-todo-keywords
+ '((sequence "TODO(t)" "STARTED(s!)" "|" "DONE(d!)")
+ (sequence "REPLY(r)" "WAITING(w!)" "|" "DONE(d!)")
+ (sequence "TOREAD(T)" "READING(R!)" "|" "READ(a!)")
+ (sequence "|" "CANCELLED(x!)" "SOMEDAY(o!)" "DONE(d!)"))
+ org-use-fast-todo-selection t
+ org-use-speed-commands t
+ org-gnus-prefer-web-links nil))
+ (require 'org)
+ #+END_SRC
+* Agenda
+ #+begin_src emacs-lisp
+ (setq org-agenda-custom-commands
+ '(("w" todo "WAITING" nil)
+ ("W" agenda "" ((org-agenda-ndays 21))))
+ org-agenda-files (list jao-notes-dir)
+ org-agenda-include-diary t
+ org-agenda-include-inactive-timestamps t
+ org-agenda-inhibit-startup nil
+ 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-span 7
+ org-agenda-start-on-weekday nil
+ org-agenda-window-setup 'current-window)
+ #+end_src
+* Capture templates
+ #+BEGIN_SRC emacs-lisp
+ (setq org-capture-templates
+ '(("t" "TODO" entry
+ (file+headline "inbox.org" "Todo")
+ "* TODO %?\n %i%a" :prepend t)
+ ("r" "REPLY" entry
+ (file+headline "inbox.org" "Todo")
+ "* REPLY %:subject%?\n %t\n %i%a" :prepend t)
+ ("a" "Appointment" entry
+ (file+olp "inbox.org" "Appointments")
+ "* %^T %?\n %a" :time-prompt t)
+ ("w" "Wintermute TODO" entry
+ (file+olp "bigml.org" "Wintermute" "Tasks")
+ "* TODO %?\n %i%a" :prepend t)
+ ("i" "Inbox note" entry (file+headline "inbox.org" "Notes")
+ "* %a\n %i%?(added on: %u)" :prepend t)
+ ("x" "Clipboard" entry (file+headline "inbox.org" "Notes")
+ "* %?\n %a\n %x\n (added: %u)" :prepend t)))
+ ;; (org-capture-upgrade-templates org-capture-templates)
+ #+END_SRC
+* MIME and file apps
+ #+BEGIN_SRC emacs-lisp
+ (setq org-file-apps
+ '((system . mailcap)
+ (".*\\.djvu" . system)
+ (t . emacs)))
+ #+END_SRC
+* Calendar
+ #+BEGIN_SRC emacs-lisp
+ (setq gnus-icalendar-org-capture-file
+ (expand-file-name "inbox.org" org-directory)
+ gnus-icalendar-org-capture-headline '("Appointments"))
+ (eval-after-load "gnus"
+ '(progn (require 'org-agenda)
+ (require 'gnus-icalendar)
+ (gnus-icalendar-org-setup)))
+ #+END_SRC
+* LaTeX
+ #+begin_src emacs-lisp
+ (use-package org-fragtog
+ :after org
+ :ensure t
+ :hook ((org-mode . org-fragtog-mode)))
+
+ (require 'org-fragtog)
+
+ (setq org-format-latex-options
+ `(:foreground default
+ :background
+ ,(if (jao-colors-scheme-dark-p) "black" "white")
+ :scale 1.25
+ :html-foreground "black"
+ :html-background "Transparent"
+ :html-scale 1.0
+ :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))
+ org-preview-latex-image-directory
+ (expand-file-name "~/.emacs.d/cache/ltximg/")
+ org-latex-hyperref-template nil
+ org-highlight-latex-and-related '(latex script entities))
+
+ (require 'ox-latex)
+ (add-to-list 'org-latex-classes
+ '("bmlarticle"
+ "\\documentclass{bmlarticle}\n[NO-DEFAULT-PACKAGES]\n[EXTRA]"
+ ("\\section{%s}" . "\\section*{%s}")
+ ("\\subsection{%s}" . "\\subsection*{%s}")
+ ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+ ("\\paragraph{%s}" . "\\paragraph*{%s}")
+ ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
+
+ (use-package cdlatex
+ :ensure t
+ :hook ((org-mode . org-cdlatex-mode))
+ :diminish ((cdlatex-mode . " £")
+ (org-cdlatex-mode . " £")))
+
+ #+end_src
+
+* Export (minted)
+
+ #+begin_src emacs-lisp
+ (setq org-latex-listings 'minted
+ org-latex-packages-alist '(("" "minted"))
+ org-latex-pdf-process
+ '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
+ "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
+ #+end_src
+
+* Babel
+ - [[http://cachestocaches.com/2018/6/org-literate-programming][Literate Programming with Org-mode]]
+ - [[http://howardism.org/Technical/Emacs/literate-devops.html][Literate DevOps]]
+
+ #+begin_src emacs-lisp
+ (setq org-src-window-setup 'other-window) ;; current-window
+ (require 'org-tempo nil t) ;; <s TAB for 9.2 and later
+
+ ;; (use-package ob-elixir
+ ;; :ensure t
+ ;; :after org)
+
+ (use-package ob-prolog
+ :ensure t
+ :after org)
+
+ (org-babel-do-load-languages
+ 'org-babel-load-languages
+ '((calc . t)
+ (clojure . t)
+ ;; (elixir . t)
+ (emacs-lisp .t)
+ (gnuplot .t)
+ (haskell . t)
+ (makefile . t)
+ (ocaml . t)
+ (org . t)
+ (python . t)
+ (scheme .t)
+ (shell . t)
+ (prolog . t)))
+ #+end_src
+
+* Org cliplink (link from clipboard)
+ [[https://github.com/rexim/org-cliplink][GitHub - rexim/org-cliplink: Insert org-mode links from clipboard]]
+
+ #+BEGIN_SRC emacs-lisp
+ (use-package org-cliplink
+ :ensure t
+ :bind (:map org-mode-map ("C-c C-f" . org-cliplink))
+ :config
+ (add-to-list 'org-capture-templates
+ '("k" "Cliplink capture task" entry
+ (file+headline "inbox.org" "Todo")
+ "* TODO %(org-cliplink-capture) %?" :prepend t)
+ t))
+ #+END_SRC
+
+* Org download
+
+ #+begin_src emacs-lisp
+ (use-package org-download
+ :ensure t
+ :after org
+ :init (setq org-download-screenshot-method "import %s")
+ :bind
+ (:map org-mode-map
+ (("C-c S" . org-download-screenshot)
+ ("C-c I" . org-download-yank))))
+ #+end_src
+
+* Org roam
+ #+begin_src emacs-lisp
+ (use-package org-roam
+ :ensure t
+ :init
+ (defun jao-roam--slug (slug) (replace-regexp-in-string "_" "-" slug))
+
+ (defun jao-roam--cat ()
+ (let* ((cats (seq-difference (directory-files org-roam-directory)
+ '("." ".." "attic")))
+ (cat (completing-read "Top level cat: " cats)))
+ (cond ((file-exists-p (expand-file-name cat org-roam-directory)) cat)
+ ((yes-or-no-p "New category, create?") cat)
+ (t (jao-roam--cat)))))
+
+ (setq org-roam-capture-templates
+ `(("d" "default" plain #'org-roam-capture--get-point
+ "%a %i"
+ :file-name "%(jao-roam--cat)/%(jao-roam--slug \"${slug}\")"
+ :head ,(concat "#+title: ${title}"
+ "\n#+created: %T"
+ "\n#+roam_tags: %?"
+ "\n#+roam_ref: %:url\n\n"))))
+
+ :custom ((org-roam-directory (expand-file-name "~/org/notes"))
+ (org-roam-encrypt-files nil)
+ (org-roam-buffer-position nil)
+ (org-roam-buffer-height nil)
+ (org-roam-buffer-window-parameters nil)
+ (org-roam-link-use-custom-faces t)
+ (org-roam-link-auto-replace t)
+ (org-roam-tag-sources '(prop vanilla all-directories))
+ (org-roam-file-exclude-regexp ".+/code\\|attic/.*"))
+
+ :config
+ (defvar org-roam-consult-flags
+ '("--null" "--ignore-case" "--type=org" "--line-buffered"
+ "--color=always" "--max-columns=250" "--no-heading" "--line-number"))
+
+ (defun consult-org-roam ()
+ "Search org-roam directory using consult-ripgrep. With live-preview."
+ (interactive)
+ (let ((consult-ripgrep-command
+ (format "rg %s . -e ARG OPTS"
+ (mapconcat 'identity org-roam-consult-flags " "))))
+ (consult-ripgrep org-roam-directory)))
+
+ (major-mode-hydra-define+ org-mode ()
+ ("Roam"
+ (("i" org-roam-insert "insert")
+ ("f" org-roam-find-file "find-file")
+ ("o" consult-org-roam "consult")
+ ("v" org-roam-buffer-toggle-display "toggle backlinks"))))
+
+ (jao-define-attached-buffer (regexp-quote org-roam-buffer) 0.33)
+
+ :hook ((after-init . org-roam-mode))
+ :bind (("C-c n" . org-roam-capture)
+ ("C-c N" . org-roam-find-file))
+ :diminish)
+ #+end_src
+* Links
+ #+begin_src emacs-lisp
+ (require 'org-gnus nil t)
+ (require 'ol-gnus nil t)
+ (require 'ol-w3m nil t)
+ (require 'ol-eshell nil t)
+ (require 'ol-bbdb nil t)
+ (require 'ol-docview nil t)
+ (require 'ol-info nil t)
+
+ (setq org-link-abbrev-alist
+ '(("jao.io" "https://jao.io/")))
+ #+end_src
+* jao-org
+ #+begin_src emacs-lisp
+ (use-package jao-org-utils)
+
+ (use-package jao-org-links
+ :commands jao-org-links-setup
+ :bind (("C-c T" . jao-org-insert-doc)))
+
+ (jao-org-utils-setup)
+ (jao-org-utils-eldoc-setup)
+ (jao-org-links-setup jao-sink-dir)
+
+ (with-eval-after-load "pdf-view"
+ (define-key pdf-view-mode-map (kbd "C-c o") #'jao-org-pdf-goto-org)
+ (define-key pdf-view-mode-map (kbd "C-c O") #'jao-org-pdf-goto-org*))
+ #+end_src
+* Geiser and org
+ #+begin_src emacs-lisp
+ (defun jao-org--set-geiser-impl () (setq-local geiser-repl--impl 'guile))
+ (add-hook 'org-mode-hook #'jao-org--set-geiser-impl)
+ #+end_src
+* Keybindings
+ #+begin_src emacs-lisp
+ (define-key mode-specific-map [?a] 'org-agenda)
+ (define-key org-mode-map "\C-cv" 'jao-org-copy-link-at-point)
+ (define-key org-mode-map [(control ?c) tab] 'org-force-cycle-archived)
+ (define-key org-mode-map [(f7)] 'org-archive-to-archive-sibling)
+ (define-key org-mode-map "\C-cW" 'jao-insert-w3m-link)
+ (define-key org-mode-map "\C-c'" 'org-edit-src-code)
+ (define-key org-mode-map "\C-co" 'outline-hide-other)
+ (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)
+ (global-set-key "\C-cO" 'org-open-at-point-global)
+ (global-set-key "\C-ca" 'org-agenda)
+ (global-set-key [(f3)] #'org-capture-goto-last-stored)
+ #+end_src