Move Org related packages and settings to their own section
This commit is contained in:
parent
ade76106df
commit
3539accfb1
@ -1898,45 +1898,32 @@ It also provides some nice commands to navigate between change sets.
|
|||||||
(([f6] . git-timemachine-toggle)))
|
(([f6] . git-timemachine-toggle)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Custom commands and functions
|
* Org mode
|
||||||
|
|
||||||
** Frame manipulation
|
** ~outline~
|
||||||
|
|
||||||
*** Hidden modeline mode
|
This is the mode Org is based on. It’s technically a built-in, but i configure it here so it remains together with other Org setup.
|
||||||
:PROPERTIES:
|
|
||||||
:SOURCE: http://emacs-doctor.com/emacs-strip-tease.html
|
|
||||||
:END:
|
|
||||||
|
|
||||||
To temporarily hide the mode line.
|
#+begin_src emacs-lisp
|
||||||
|
(use-package outline
|
||||||
|
:ensure nil
|
||||||
|
:custom-face
|
||||||
|
(outline-1 ((t (:inherit font-lock-function-name-face :overline t :weight bold :height 1.2))))
|
||||||
|
(outline-2 ((t (:inherit font-lock-variable-name-face :overline t :weight bold :height 1.1))))
|
||||||
|
(outline-3 ((t (:inherit font-lock-keyword-face :overline t :weight bold)))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
** Function to set up Org-mode buffers
|
||||||
(defvar hidden-mode-line-mode nil)
|
|
||||||
(defvar hide-mode-line nil)
|
|
||||||
|
|
||||||
(define-minor-mode hidden-mode-line-mode
|
#+begin_src emacs-lisp
|
||||||
"Minor mode to hide the mode-line in the current buffer."
|
(defun gpolonkai/setup-org-mode ()
|
||||||
:init-value nil
|
(org-indent-mode 1)
|
||||||
:global nil
|
(variable-pitch-mode 1)
|
||||||
:variable hidden-mode-line-mode
|
(auto-fill-mode 0)
|
||||||
:group 'editing-basics
|
(visual-line-mode 1))
|
||||||
(if hidden-mode-line-mode
|
#+end_src
|
||||||
(setq hide-mode-line mode-line-format
|
|
||||||
mode-line-format nil)
|
|
||||||
(setq mode-line-format hide-mode-line
|
|
||||||
hide-mode-line nil))
|
|
||||||
(force-mode-line-update)
|
|
||||||
(redraw-display)
|
|
||||||
(when (and (called-interactively-p 'interactive)
|
|
||||||
hidden-mode-line-mode)
|
|
||||||
(run-with-idle-timer
|
|
||||||
0 nil 'message
|
|
||||||
(concat "Hidden Mode Line Mode enabled. "
|
|
||||||
"Use M-x hidden-mode-line-mode to make mode-line appear."))))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Org mode stuff
|
** Display horizontal rulers as a full-width line
|
||||||
|
|
||||||
*** Display horizontal rulers as a full-width line
|
|
||||||
|
|
||||||
From [[https://matrix.to/#/@suckless_shill:matrix.org][viz]] in the [[https://matrix.to/#/#org-mode:matrix.org][org-mode]] Matrix room.
|
From [[https://matrix.to/#/@suckless_shill:matrix.org][viz]] in the [[https://matrix.to/#/#org-mode:matrix.org][org-mode]] Matrix room.
|
||||||
|
|
||||||
@ -1955,7 +1942,173 @@ From [[https://matrix.to/#/@suckless_shill:matrix.org][viz]] in the [[https://ma
|
|||||||
(add-hook 'org-font-lock-set-keywords-hook #'vz/org-fontify-horizontal-break)
|
(add-hook 'org-font-lock-set-keywords-hook #'vz/org-fontify-horizontal-break)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Org Roam
|
** Main ~org~ configuration
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package org
|
||||||
|
:demand
|
||||||
|
:custom-face
|
||||||
|
(org-block ((t (:inherit fixed-pitch))))
|
||||||
|
(org-code ((t (:inherit (shadow fixed-pitch)))))
|
||||||
|
(org-indent ((t (:inherit (org-hide fixed-pitch)))))
|
||||||
|
(org-verbatim ((t (:inherit (shadow fixed-pitch)))))
|
||||||
|
(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
|
||||||
|
(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch)))))
|
||||||
|
(org-checkbox ((t (:inherit fixed-pitch))))
|
||||||
|
(org-table ((t (:inherit (shadow fixed-pitch)))))
|
||||||
|
(org-_drawer ((t (:inherit (shadow fixed-pitch)))))
|
||||||
|
:init
|
||||||
|
(require 'xdg-paths)
|
||||||
|
(defface org-checkbox-todo-text
|
||||||
|
'((t (:inherit org-todo)))
|
||||||
|
"Face for the text part of an unchecked org-mode checkbox.")
|
||||||
|
(defface org-checkbox-done-text
|
||||||
|
'((t (:inherit org-done)))
|
||||||
|
"Face for the text part of a checked org-mode checkbox.")
|
||||||
|
(font-lock-add-keywords
|
||||||
|
'org-mode
|
||||||
|
`(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?: \\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)" 1 'org-checkbox-todo-text prepend))
|
||||||
|
'append)
|
||||||
|
(font-lock-add-keywords
|
||||||
|
'org-mode
|
||||||
|
`(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?:X\\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)" 12 'org-checkbox-done-text prepend))
|
||||||
|
'append)
|
||||||
|
(setq-default org-default-notes-file (expand-file-name "notes.org" org-directory)
|
||||||
|
org-agenda-files `(,org-directory)
|
||||||
|
org-time-stamp-formats '("<%Y-%m-%d>" . "<%Y-%m-%d %H:%M>")
|
||||||
|
org-todo-keywords '((sequence "TODO(t)"
|
||||||
|
"DOING(w@/!)"
|
||||||
|
"BLOCKED(b@/!)"
|
||||||
|
"SOMEDAY(s!)"
|
||||||
|
"|"
|
||||||
|
"CANCELED(c@/!)"
|
||||||
|
"REVIEW(r@/!)"
|
||||||
|
"DONE(d@/!)"))
|
||||||
|
org-todo-keyword-faces '(("SOMEDAY" . (:foreground "goldenrod"))
|
||||||
|
("CANCELED" . (:foreground "#228b22" :strike-through t)))
|
||||||
|
org-html-checkbox-types
|
||||||
|
'((unicode (on . "<span class=\"task-done\">☑</span>")
|
||||||
|
(off . "<span class=\"task-todo\">☐</span>")
|
||||||
|
(trans . "<span class=\"task-in-progress\">▣</span>"))))
|
||||||
|
:config
|
||||||
|
;; Load the markdown exporter
|
||||||
|
(require 'ox-md)
|
||||||
|
;; Handle org-protocol:// links
|
||||||
|
(require 'org-protocol)
|
||||||
|
;; Make it possible to encrypt headings
|
||||||
|
(require 'org-crypt)
|
||||||
|
;; Make it possible to use inline tasks
|
||||||
|
(require 'org-inlinetask)
|
||||||
|
;; Make sure we load Python babel stuff
|
||||||
|
(org-babel-do-load-languages
|
||||||
|
'org-babel-load-languages
|
||||||
|
'((python . t)))
|
||||||
|
;; Track habits
|
||||||
|
(require 'org-habit)
|
||||||
|
:custom
|
||||||
|
(org-log-into-drawer t)
|
||||||
|
(org-ellipsis "…#")
|
||||||
|
(org-startup-folded 'content)
|
||||||
|
(org-log-done 'time)
|
||||||
|
(org-src-preserve-indentation t)
|
||||||
|
(org-tags-column 0)
|
||||||
|
(org-startup-indented t)
|
||||||
|
(org-special-ctrl-a/e t)
|
||||||
|
(org-return-follows-link t)
|
||||||
|
(org-src-fontify-natively t)
|
||||||
|
(org-goto-interface 'outline-path-completion)
|
||||||
|
(org-goto-max-level 10)
|
||||||
|
(org-html-checkbox-type 'unicode)
|
||||||
|
(org-src-window-setup 'current-window)
|
||||||
|
(org-pretty-entities t)
|
||||||
|
(org-pretty-entities-include-sub-superscripts t)
|
||||||
|
(org-use-speed-commands t)
|
||||||
|
(org-hide-leading-stars t)
|
||||||
|
(org-enforce-todo-dependencies t)
|
||||||
|
(org-enforce-todo-checkbox-dependencies t)
|
||||||
|
(org-catch-invisible-edits 'show)
|
||||||
|
(org-log-reschedule 'time)
|
||||||
|
(org-log-redeadline 'note)
|
||||||
|
(org-refile-use-outline-path 'file)
|
||||||
|
(org-outline-path-complete-in-steps nil)
|
||||||
|
(org-refile-allow-creating-parent-nodes 'confirm)
|
||||||
|
(org-crypt-key "B0740C4C")
|
||||||
|
(org-speed-commands-user '(("m" . org-mark-subtree)))
|
||||||
|
(org-refile-targets '((nil :maxlevel . 6)
|
||||||
|
(org-agenda-files :maxlevel . 3)))
|
||||||
|
(org-agenda-custom-commands '(("c" "Simple agenda view"
|
||||||
|
((tags "PRIORITY=\"A\""
|
||||||
|
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||||
|
(org-agenda-overriding-header "High priority unfinished tasks")))
|
||||||
|
(agenda "")
|
||||||
|
(alltodo ""
|
||||||
|
((org-agenda-skip-function
|
||||||
|
'(or (air-org-skip-subtree-if-habit)
|
||||||
|
(air-org-skip-subtree-if-priority ?A)
|
||||||
|
(gpolonkai/org-skip-subtree-if-state "SOMEDAY")
|
||||||
|
(org-agenda-skip-if nil '(scheduled deadline))))
|
||||||
|
(org-agenda-overriding-header "ALL normal priority tasks"))))
|
||||||
|
((org-agenda-compact-blocks t)))))
|
||||||
|
(org-log-note-clock-out t)
|
||||||
|
(org-capture-templates '(("L" "Org-protocol capture" entry
|
||||||
|
(file+headline
|
||||||
|
(lambda ()
|
||||||
|
(expand-file-name "index.org" org-directory))
|
||||||
|
"Captures")
|
||||||
|
"** %:description\n:PROPERTIES:\n:SOURCE: %:link\n:END:\n\n%:initial"
|
||||||
|
:empty-lines 1)
|
||||||
|
("R" "Region to Current Clocked Task" plain
|
||||||
|
(clock)
|
||||||
|
"%i"
|
||||||
|
:immediate-finish t
|
||||||
|
:empty-lines 1)
|
||||||
|
("K" "Kill-ring to Current Clocked Task" plain
|
||||||
|
(clock)
|
||||||
|
"%c"
|
||||||
|
:immediate-finish t
|
||||||
|
:empty-lines 1)
|
||||||
|
("c" "Item to current Clocked Task" item
|
||||||
|
(clock)
|
||||||
|
"%i%?"
|
||||||
|
:empty-lines 1)
|
||||||
|
("g" "GT2 note" entry
|
||||||
|
(file+headline
|
||||||
|
(lambda ()
|
||||||
|
(expand-file-name "gt2-notes.org" org-directory))
|
||||||
|
"Captures")
|
||||||
|
"** %^{Title}\n:PROPERTIES:\n:CREATED: %T\n:END:\n\n%a\n\n%i%?")
|
||||||
|
("p" "Blog post" entry
|
||||||
|
(file+olp+datetree
|
||||||
|
(lambda ()
|
||||||
|
(expand-file-name "blog.org" org-directory)))
|
||||||
|
"* %^{Title} :blog:\n:PROPERTIES:\n:CREATED: %T\n:END:\n\n%i%?")))
|
||||||
|
(org-read-date-force-compatible-dates nil)
|
||||||
|
(org-agenda-prefix-format '((agenda . " %i %-12:c%?-12t% s")
|
||||||
|
(todo . " %i %-12:c %(concat \"[ \"(org-format-outline-path (org-get-outline-path)) \" ]\") ")
|
||||||
|
(tags . " %i %-12:c %(concat \"[ \"(org-format-outline-path (org-get-outline-path)) \" ]\") ")
|
||||||
|
(timeline . " % s")
|
||||||
|
(search . " %i %-12:c")))
|
||||||
|
(org-agenda-dim-blocked-tasks t)
|
||||||
|
:hook
|
||||||
|
(ediff-select . f-ediff-org-unfold-tree-element)
|
||||||
|
(ediff-unselect . f-ediff-org-fold-tree)
|
||||||
|
(org-mode . gpolonkai/setup-org-mode)
|
||||||
|
:bind
|
||||||
|
(:map gpolonkai/pers-map
|
||||||
|
("a" . gpolonkai/org-agenda-list)
|
||||||
|
("C" . org-capture)
|
||||||
|
("l" . org-store-link)
|
||||||
|
:map org-mode-map
|
||||||
|
("SPC" . gpolonkai/org-space-key)
|
||||||
|
("C-c l" . org-toggle-link-display)
|
||||||
|
("C-a" . gpolonkai/move-to-beginning-of-line)
|
||||||
|
("C-e" . gpolonkai/move-to-end-of-line)
|
||||||
|
("C-c h" . outline-previous-heading)
|
||||||
|
("C-c ." . gpolonkai/org-insert-current-timestamp)
|
||||||
|
("C-c ;" . org-toggle-timestamp-type)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~org-roam~
|
||||||
|
|
||||||
Let’s see if i can get my brain more organised this way…
|
Let’s see if i can get my brain more organised this way…
|
||||||
|
|
||||||
@ -1997,7 +2150,7 @@ Let’s see if i can get my brain more organised this way…
|
|||||||
("C-c n d" . org-roam-dailies-map))
|
("C-c n d" . org-roam-dailies-map))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Timestamps for roam nodes
|
** ~org-roam-timestamps~
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package org-roam-timestamps
|
(use-package org-roam-timestamps
|
||||||
@ -2009,7 +2162,7 @@ Let’s see if i can get my brain more organised this way…
|
|||||||
(org-roam-timestamps-timestamp-parent-file t))
|
(org-roam-timestamps-timestamp-parent-file t))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Org Roam UI
|
** ~org-roam-ui~
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package org-roam-ui
|
(use-package org-roam-ui
|
||||||
@ -2021,6 +2174,150 @@ Let’s see if i can get my brain more organised this way…
|
|||||||
(org-roam-ui-open-on-start nil))
|
(org-roam-ui-open-on-start nil))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** ~org-bullets~ for more beautiful bullet points
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package org-bullets
|
||||||
|
:custom
|
||||||
|
(org-bullets-face-name 'org-bullet-face)
|
||||||
|
(org-bullets-bullet-list '("✙" "♱" "♰" "☥" "✞" "✟" "✝" "†" "✠" "✚" "✜" "✛" "✢" "✣" "✤" "✥"))
|
||||||
|
:hook
|
||||||
|
(org-mode . org-bullets-mode))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~org-sticky-header~ so i always know where i am
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package org-sticky-header
|
||||||
|
:custom
|
||||||
|
(org-sticky-header-full-path 'full)
|
||||||
|
:hook
|
||||||
|
(org-mode . org-sticky-header-mode))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~org-random-todo~ to show a random ToDo every hour
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package org-random-todo
|
||||||
|
:demand
|
||||||
|
:config
|
||||||
|
;; Don’t bug me too often…
|
||||||
|
(setq org-random-todo-how-often 3600)
|
||||||
|
:custom
|
||||||
|
(org-random-todo-skip-keywords '("SOMEDAY"))
|
||||||
|
:bind
|
||||||
|
(:map gpolonkai/pers-map
|
||||||
|
("r" . org-random-todo)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~org-autolist~ for better list management
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package org-autolist
|
||||||
|
:hook
|
||||||
|
(org-mode . org-autolist-mode))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~secretaria~ to remind me of my tasks
|
||||||
|
|
||||||
|
And because even secretaries need a secretary today.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package secretaria
|
||||||
|
:after
|
||||||
|
alert
|
||||||
|
:hook
|
||||||
|
;; use this for getting a reminder every 30 minutes of those tasks
|
||||||
|
;; scheduled for today and which have no time of day defined.
|
||||||
|
(after-init . secretaria-unknown-time-always-remind-me))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~org-clock-waybar~ to export currently clocked task for status bar display
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package org-clock-waybar
|
||||||
|
:ensure nil
|
||||||
|
:quelpa (org-clock-waybar
|
||||||
|
:fetcher git
|
||||||
|
:url "https://gitea.polonkai.eu/gergely/org-clock-waybar.git")
|
||||||
|
:config
|
||||||
|
(org-clock-waybar-setup))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~ob-mermaid~, to generate Mermaid diagrams
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package ob-mermaid
|
||||||
|
:custom
|
||||||
|
(ob-mermaid-cli-path "/home/polesz/.local/node/bin/mmdc"))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~plantuml-mode~ to edit PlantUML files in and out of Org documents
|
||||||
|
|
||||||
|
Before using this, make sure the latest PlantUML JAR file is downloaded into the downloads
|
||||||
|
directory. It is available from [[http://plantuml.com/download][here]].
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package plantuml-mode
|
||||||
|
:init
|
||||||
|
(setq plantuml-jar-path
|
||||||
|
(expand-file-name
|
||||||
|
;; Make sure we have a download location even if XDG is not working
|
||||||
|
(cond
|
||||||
|
((xdg-user-dir "DOWNLOAD")
|
||||||
|
(expand-file-name "plantuml.jar" (xdg-user-dir "DOWNLOAD")))
|
||||||
|
(t
|
||||||
|
"~/Downloads/plantuml.jar"))))
|
||||||
|
(defvaralias 'org-plantuml-jar-path 'plantuml-jar-path)
|
||||||
|
:config
|
||||||
|
(org-babel-do-load-languages
|
||||||
|
'org-babel-load-languages
|
||||||
|
'((plantuml . t))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ~ox-rst~ to export to ReSTructured text
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package ox-rst
|
||||||
|
:after org)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Custom commands and functions
|
||||||
|
|
||||||
|
** Frame manipulation
|
||||||
|
|
||||||
|
*** Hidden modeline mode
|
||||||
|
:PROPERTIES:
|
||||||
|
:SOURCE: http://emacs-doctor.com/emacs-strip-tease.html
|
||||||
|
:END:
|
||||||
|
|
||||||
|
To temporarily hide the mode line.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defvar hidden-mode-line-mode nil)
|
||||||
|
(defvar hide-mode-line nil)
|
||||||
|
|
||||||
|
(define-minor-mode hidden-mode-line-mode
|
||||||
|
"Minor mode to hide the mode-line in the current buffer."
|
||||||
|
:init-value nil
|
||||||
|
:global nil
|
||||||
|
:variable hidden-mode-line-mode
|
||||||
|
:group 'editing-basics
|
||||||
|
(if hidden-mode-line-mode
|
||||||
|
(setq hide-mode-line mode-line-format
|
||||||
|
mode-line-format nil)
|
||||||
|
(setq mode-line-format hide-mode-line
|
||||||
|
hide-mode-line nil))
|
||||||
|
(force-mode-line-update)
|
||||||
|
(redraw-display)
|
||||||
|
(when (and (called-interactively-p 'interactive)
|
||||||
|
hidden-mode-line-mode)
|
||||||
|
(run-with-idle-timer
|
||||||
|
0 nil 'message
|
||||||
|
(concat "Hidden Mode Line Mode enabled. "
|
||||||
|
"Use M-x hidden-mode-line-mode to make mode-line appear."))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
* ~use-package~ packages
|
* ~use-package~ packages
|
||||||
|
|
||||||
** GNU Globals
|
** GNU Globals
|
||||||
@ -2035,20 +2332,6 @@ Let’s see if i can get my brain more organised this way…
|
|||||||
(c-mode-common . gpolonkai/cond-enable-ggtags-mode))
|
(c-mode-common . gpolonkai/cond-enable-ggtags-mode))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Secretaria
|
|
||||||
|
|
||||||
Because even secretaries need a secretary today.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package secretaria
|
|
||||||
:after
|
|
||||||
alert
|
|
||||||
:hook
|
|
||||||
;; use this for getting a reminder every 30 minutes of those tasks
|
|
||||||
;; scheduled for today and which have no time of day defined.
|
|
||||||
(after-init . secretaria-unknown-time-always-remind-me))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Mailing with mu4e
|
** Mailing with mu4e
|
||||||
|
|
||||||
Due to my programming (and maybe a bit of OCD) needs, i set trailing whitespace to have a red
|
Due to my programming (and maybe a bit of OCD) needs, i set trailing whitespace to have a red
|
||||||
@ -2471,215 +2754,6 @@ Because that’s still my favourite language.
|
|||||||
|
|
||||||
* Org mode
|
* Org mode
|
||||||
|
|
||||||
** Outline mode
|
|
||||||
|
|
||||||
This is mostly needed for customizing faces.
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package outline
|
|
||||||
:ensure nil
|
|
||||||
:custom-face
|
|
||||||
(outline-1 ((t (:inherit font-lock-function-name-face :overline t :weight bold :height 1.2))))
|
|
||||||
(outline-2 ((t (:inherit font-lock-variable-name-face :overline t :weight bold :height 1.1))))
|
|
||||||
(outline-3 ((t (:inherit font-lock-keyword-face :overline t :weight bold)))))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** The main Org config
|
|
||||||
This is a big one; I use a lot of customisation here.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(defun gpolonkai/setup-org-mode ()
|
|
||||||
(org-indent-mode)
|
|
||||||
(variable-pitch-mode 1)
|
|
||||||
(auto-fill-mode 0)
|
|
||||||
(visual-line-mode 1))
|
|
||||||
|
|
||||||
(use-package org
|
|
||||||
:demand
|
|
||||||
:custom-face
|
|
||||||
(org-block ((t (:inherit fixed-pitch))))
|
|
||||||
(org-code ((t (:inherit (shadow fixed-pitch)))))
|
|
||||||
(org-indent ((t (:inherit (org-hide fixed-pitch)))))
|
|
||||||
(org-verbatim ((t (:inherit (shadow fixed-pitch)))))
|
|
||||||
(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
|
|
||||||
(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch)))))
|
|
||||||
(org-checkbox ((t (:inherit fixed-pitch))))
|
|
||||||
(org-table ((t (:inherit (shadow fixed-pitch)))))
|
|
||||||
(org-_drawer ((t (:inherit (shadow fixed-pitch)))))
|
|
||||||
:init
|
|
||||||
(require 'xdg-paths)
|
|
||||||
(defface org-checkbox-todo-text
|
|
||||||
'((t (:inherit org-todo)))
|
|
||||||
"Face for the text part of an unchecked org-mode checkbox.")
|
|
||||||
(defface org-checkbox-done-text
|
|
||||||
'((t (:inherit org-done)))
|
|
||||||
"Face for the text part of a checked org-mode checkbox.")
|
|
||||||
(font-lock-add-keywords
|
|
||||||
'org-mode
|
|
||||||
`(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?: \\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)" 1 'org-checkbox-todo-text prepend))
|
|
||||||
'append)
|
|
||||||
(font-lock-add-keywords
|
|
||||||
'org-mode
|
|
||||||
`(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?:X\\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)" 12 'org-checkbox-done-text prepend))
|
|
||||||
'append)
|
|
||||||
(setq-default org-default-notes-file (expand-file-name "notes.org" org-directory)
|
|
||||||
org-agenda-files `(,org-directory)
|
|
||||||
org-time-stamp-formats '("<%Y-%m-%d>" . "<%Y-%m-%d %H:%M>")
|
|
||||||
org-todo-keywords '((sequence "TODO(t)"
|
|
||||||
"DOING(w@/!)"
|
|
||||||
"BLOCKED(b@/!)"
|
|
||||||
"SOMEDAY(s!)"
|
|
||||||
"|"
|
|
||||||
"CANCELED(c@/!)"
|
|
||||||
"REVIEW(r@/!)"
|
|
||||||
"DONE(d@/!)"))
|
|
||||||
org-todo-keyword-faces '(("SOMEDAY" . (:foreground "goldenrod"))
|
|
||||||
("CANCELED" . (:foreground "#228b22" :strike-through t)))
|
|
||||||
org-html-checkbox-types
|
|
||||||
'((unicode (on . "<span class=\"task-done\">☑</span>")
|
|
||||||
(off . "<span class=\"task-todo\">☐</span>")
|
|
||||||
(trans . "<span class=\"task-in-progress\">▣</span>"))))
|
|
||||||
:config
|
|
||||||
;; Load the markdown exporter
|
|
||||||
(require 'ox-md)
|
|
||||||
;; Handle org-protocol:// links
|
|
||||||
(require 'org-protocol)
|
|
||||||
;; Make it possible to encrypt headings
|
|
||||||
(require 'org-crypt)
|
|
||||||
;; Make it possible to use inline tasks
|
|
||||||
(require 'org-inlinetask)
|
|
||||||
;; Make sure we load Python babel stuff
|
|
||||||
(org-babel-do-load-languages
|
|
||||||
'org-babel-load-languages
|
|
||||||
'((python . t)))
|
|
||||||
;; Track habits
|
|
||||||
(require 'org-habit)
|
|
||||||
:custom
|
|
||||||
(org-log-into-drawer t)
|
|
||||||
(org-ellipsis "…#")
|
|
||||||
(org-startup-folded 'content)
|
|
||||||
(org-log-done 'time)
|
|
||||||
(org-src-preserve-indentation t)
|
|
||||||
(org-tags-column 0)
|
|
||||||
(org-startup-indented t)
|
|
||||||
(org-special-ctrl-a/e t)
|
|
||||||
(org-return-follows-link t)
|
|
||||||
(org-src-fontify-natively t)
|
|
||||||
(org-goto-interface 'outline-path-completion)
|
|
||||||
(org-goto-max-level 10)
|
|
||||||
(org-html-checkbox-type 'unicode)
|
|
||||||
(org-src-window-setup 'current-window)
|
|
||||||
(org-pretty-entities t)
|
|
||||||
(org-pretty-entities-include-sub-superscripts t)
|
|
||||||
(org-use-speed-commands t)
|
|
||||||
(org-hide-leading-stars t)
|
|
||||||
(org-enforce-todo-dependencies t)
|
|
||||||
(org-enforce-todo-checkbox-dependencies t)
|
|
||||||
(org-catch-invisible-edits 'show)
|
|
||||||
(org-log-reschedule 'time)
|
|
||||||
(org-log-redeadline 'note)
|
|
||||||
(org-refile-use-outline-path 'file)
|
|
||||||
(org-outline-path-complete-in-steps nil)
|
|
||||||
(org-refile-allow-creating-parent-nodes 'confirm)
|
|
||||||
(org-crypt-key "B0740C4C")
|
|
||||||
(org-speed-commands-user '(("m" . org-mark-subtree)))
|
|
||||||
(org-refile-targets '((nil :maxlevel . 6)
|
|
||||||
(org-agenda-files :maxlevel . 3)))
|
|
||||||
(org-agenda-custom-commands '(("c" "Simple agenda view"
|
|
||||||
((tags "PRIORITY=\"A\""
|
|
||||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
|
||||||
(org-agenda-overriding-header "High priority unfinished tasks")))
|
|
||||||
(agenda "")
|
|
||||||
(alltodo ""
|
|
||||||
((org-agenda-skip-function
|
|
||||||
'(or (air-org-skip-subtree-if-habit)
|
|
||||||
(air-org-skip-subtree-if-priority ?A)
|
|
||||||
(gpolonkai/org-skip-subtree-if-state "SOMEDAY")
|
|
||||||
(org-agenda-skip-if nil '(scheduled deadline))))
|
|
||||||
(org-agenda-overriding-header "ALL normal priority tasks"))))
|
|
||||||
((org-agenda-compact-blocks t)))))
|
|
||||||
(org-log-note-clock-out t)
|
|
||||||
(org-capture-templates '(("L" "Org-protocol capture" entry
|
|
||||||
(file+headline
|
|
||||||
(lambda ()
|
|
||||||
(expand-file-name "index.org" org-directory))
|
|
||||||
"Captures")
|
|
||||||
"** %:description\n:PROPERTIES:\n:SOURCE: %:link\n:END:\n\n%:initial"
|
|
||||||
:empty-lines 1)
|
|
||||||
("R" "Region to Current Clocked Task" plain
|
|
||||||
(clock)
|
|
||||||
"%i"
|
|
||||||
:immediate-finish t
|
|
||||||
:empty-lines 1)
|
|
||||||
("K" "Kill-ring to Current Clocked Task" plain
|
|
||||||
(clock)
|
|
||||||
"%c"
|
|
||||||
:immediate-finish t
|
|
||||||
:empty-lines 1)
|
|
||||||
("c" "Item to current Clocked Task" item
|
|
||||||
(clock)
|
|
||||||
"%i%?"
|
|
||||||
:empty-lines 1)
|
|
||||||
("g" "GT2 note" entry
|
|
||||||
(file+headline
|
|
||||||
(lambda ()
|
|
||||||
(expand-file-name "gt2-notes.org" org-directory))
|
|
||||||
"Captures")
|
|
||||||
"** %^{Title}\n:PROPERTIES:\n:CREATED: %T\n:END:\n\n%a\n\n%i%?")
|
|
||||||
("p" "Blog post" entry
|
|
||||||
(file+olp+datetree
|
|
||||||
(lambda ()
|
|
||||||
(expand-file-name "blog.org" org-directory)))
|
|
||||||
"* %^{Title} :blog:\n:PROPERTIES:\n:CREATED: %T\n:END:\n\n%i%?")))
|
|
||||||
(org-read-date-force-compatible-dates nil)
|
|
||||||
(org-agenda-prefix-format '((agenda . " %i %-12:c%?-12t% s")
|
|
||||||
(todo . " %i %-12:c %(concat \"[ \"(org-format-outline-path (org-get-outline-path)) \" ]\") ")
|
|
||||||
(tags . " %i %-12:c %(concat \"[ \"(org-format-outline-path (org-get-outline-path)) \" ]\") ")
|
|
||||||
(timeline . " % s")
|
|
||||||
(search . " %i %-12:c")))
|
|
||||||
(org-agenda-dim-blocked-tasks t)
|
|
||||||
:hook
|
|
||||||
(ediff-select . f-ediff-org-unfold-tree-element)
|
|
||||||
(ediff-unselect . f-ediff-org-fold-tree)
|
|
||||||
(org-mode . gpolonkai/setup-org-mode)
|
|
||||||
:bind
|
|
||||||
(:map gpolonkai/pers-map
|
|
||||||
("a" . gpolonkai/org-agenda-list)
|
|
||||||
("C" . org-capture)
|
|
||||||
("l" . org-store-link)
|
|
||||||
:map org-mode-map
|
|
||||||
("SPC" . gpolonkai/org-space-key)
|
|
||||||
("C-c l" . org-toggle-link-display)
|
|
||||||
("C-a" . gpolonkai/move-to-beginning-of-line)
|
|
||||||
("C-e" . gpolonkai/move-to-end-of-line)
|
|
||||||
("C-c h" . outline-previous-heading)
|
|
||||||
("C-c ." . gpolonkai/org-insert-current-timestamp)
|
|
||||||
("C-c ;" . org-toggle-timestamp-type)))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Show a random ToDo every hour
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package org-random-todo
|
|
||||||
:demand
|
|
||||||
:config
|
|
||||||
;; Don’t bug me too often…
|
|
||||||
(setq org-random-todo-how-often 3600)
|
|
||||||
:custom
|
|
||||||
(org-random-todo-skip-keywords '("SOMEDAY"))
|
|
||||||
:bind
|
|
||||||
(:map gpolonkai/pers-map
|
|
||||||
("r" . org-random-todo)))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Improved list management
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package org-autolist
|
|
||||||
:hook
|
|
||||||
(org-mode . org-autolist-mode))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Write messages with Org-mode
|
** Write messages with Org-mode
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
@ -2697,54 +2771,6 @@ This is a big one; I use a lot of customisation here.
|
|||||||
(org-msg-signature "\n\nBest,\n\n,#+begin_signature\n-- *Gergely Polonkai* \\\\\n,#+end_signature"))
|
(org-msg-signature "\n\nBest,\n\n,#+begin_signature\n-- *Gergely Polonkai* \\\\\n,#+end_signature"))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Sticky headers so i always know where i am
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package org-sticky-header
|
|
||||||
:custom
|
|
||||||
(org-sticky-header-full-path 'full)
|
|
||||||
:hook
|
|
||||||
(org-mode . org-sticky-header-mode))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Custom bullets
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package org-bullets
|
|
||||||
:custom
|
|
||||||
(org-bullets-face-name 'org-bullet-face)
|
|
||||||
(org-bullets-bullet-list '("✙" "♱" "♰" "☥" "✞" "✟" "✝" "†" "✠" "✚" "✜" "✛" "✢" "✣" "✤" "✥"))
|
|
||||||
:hook
|
|
||||||
(org-mode . org-bullets-mode))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Edit diagrams with mermaid
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package ob-mermaid
|
|
||||||
:custom
|
|
||||||
(ob-mermaid-cli-path "/home/polesz/.local/node/bin/mmdc"))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Allow exporting to ReSTructured text
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package ox-rst
|
|
||||||
:after org)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Export currently clocked in task for Waybar
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package org-clock-waybar
|
|
||||||
:ensure nil
|
|
||||||
:quelpa (org-clock-waybar
|
|
||||||
:fetcher git
|
|
||||||
:url "https://gitea.polonkai.eu/gergely/org-clock-waybar.git")
|
|
||||||
:config
|
|
||||||
(org-clock-waybar-setup))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Consult, Vertico, Orderless
|
* Consult, Vertico, Orderless
|
||||||
|
|
||||||
The new completing system!
|
The new completing system!
|
||||||
@ -2962,29 +2988,6 @@ The new completing system!
|
|||||||
:mode "\\.po\\'")
|
:mode "\\.po\\'")
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** PlantUML
|
|
||||||
|
|
||||||
Before using this, make sure the latest PlantUML JAR file is downloaded into the downloads
|
|
||||||
directory. It is available from [[http://plantuml.com/download][here]].
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package plantuml-mode
|
|
||||||
:init
|
|
||||||
(setq plantuml-jar-path
|
|
||||||
(expand-file-name
|
|
||||||
;; Make sure we have a download location even if XDG is not working
|
|
||||||
(cond
|
|
||||||
((xdg-user-dir "DOWNLOAD")
|
|
||||||
(expand-file-name "plantuml.jar" (xdg-user-dir "DOWNLOAD")))
|
|
||||||
(t
|
|
||||||
"~/Downloads/plantuml.jar"))))
|
|
||||||
(defvaralias 'org-plantuml-jar-path 'plantuml-jar-path)
|
|
||||||
:config
|
|
||||||
(org-babel-do-load-languages
|
|
||||||
'org-babel-load-languages
|
|
||||||
'((plantuml . t))))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** For editing CSV files
|
** For editing CSV files
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
Loading…
Reference in New Issue
Block a user