blob: b49fdcf1ca81b38874721c740fffa1b2622b6d95 (
plain) (
tree)
|
|
;;; init-notes.el --- for notes and tasks -*- lexical-binding: t -*-
;; Author: Franck Cuny <franck@fcuny.net>
;;; Commentary:
;; commentary
;;; Code:
(use-package denote
:ensure t
:hook (dired-mode . denote-dired-mode)
:init
(use-package denote-org-extras
:ensure nil)
(use-package denote-journal-extras
:ensure nil)
:bind (("C-c n r" . denote-rename-file)
("C-c n t" . denote-journal-extras-new-or-existing-entry)
("C-c n n" . denote-subdirectory)
("C-c n c" . denote))
:custom
(denote-known-keywords '("journal" "project" "TIL" "people" "interviews"))
(denote-rename-buffer-mode 1)
(denote-journal-extras-directory (concat denote-directory "journal/" (format-time-string "%Y")))
(denote-file-type "org")
(denote-org-capture-specifiers "%i\n%?")
(denote-dired-directories (list denote-directory))
(denote-dired-directories-include-subdirectories t)
(denote-journal-extras-title-format 'day-date-month-year))
(use-package consult-denote
:after consult
:ensure t
:bind (("C-c n f" . consult-denote-find)
("C-c n g" . consult-denote-grep))
:config
(consult-denote-mode 1)
;; Prefer `ripgrep' and `fd' variants when available
(when (executable-find "fd")
(setopt consult-denote-find-command #'consult-fd))
(when (executable-find "rg")
(setopt consult-denote-grep-command #'consult-ripgrep)))
(use-package org
:hook
(org-mode . turn-on-flyspell)
(org-mode . visual-line-mode)
(org-mode . org-indent-mode)
:preface
(defun my/org-entry-get-immediate (property)
(save-excursion
(let ((local (org--property-local-values property nil)))
(and local (mapconcat #'identity
(delq nil local)
(org--property-get-separator property))))))
(defun org-refile-heading-p ()
(let ((todo-state (org-get-todo-state)))
(if todo-state
(string= todo-state "PROJECT")
(my/org-entry-get-immediate "CATEGORY"))))
:config
(font-lock-add-keywords 'org-mode
'(("^ *\\(-\\) "
(0 (ignore (compose-region (match-beginning 1) (match-end 1) "•"))))))
:custom
(org-directory "~/Documents/notes")
(org-default-notes-file (expand-file-name "tasks.org" org-directory))
(org-agenda-files '("tasks.org" "inbox.org"))
(org-startup-folded t)
(org-startup-indented t)
(org-startup-with-inline-images t)
;; enable todo and checkbox dependencies
(org-enforce-todo-dependencies t)
(org-enforce-todo-checkbox-dependencies t)
;; quick access for todo states
(org-todo-keywords
'((sequence "TODO(t)" "NEXT(n)" "WAITING(w!)" "|" "DONE(d)")
(sequence "PROJECT(p@/!)" "|" "COMPLETE(d@/!)" "ABORTED(x@/!)")
(sequence "|" "CANCELLED(c)")))
(org-log-done 'time)
(org-log-into-drawer t)
;; org-refile options
(org-refile-target-verify-function 'org-refile-heading-p)
(org-refile-targets
'((org-agenda-files :maxlevel . 4)))
(org-refile-allow-creating-parent-nodes (quote confirm))
(org-hide-emphasis-markers t)
(org-hide-leading-stars t)
(org-pretty-entities t)
(org-return-follows-link t)
(org-export-backends '(html md))
(org-imenu-depth 4)
(org-insert-heading-respect-content t)
(org-outline-path-complete-in-steps nil)
(org-src-fontify-natively t)
(org-src-preserve-indentation t)
(org-src-tab-acts-natively t)
(org-src-window-setup 'current-window)
(org-yank-adjusted-subtrees t)
(org-structure-template-alist
'(("s" . "src")
("E" . "src emacs-lisp")
("p" . "src python")
("e" . "example")
("q" . "quote"))))
(use-package org-capture
:ensure nil
:after org
:bind
("C-c c" . org-capture)
:config
(setq org-capture-templates
`(("t" "Tasks" entry (file "inbox.org")
"* TODO %?\n%U" :prepend t :empty-lines 0)
("n" "note" plain (file denote-last-path) #'denote-org-capture
:no-save t :immediate-finish nil :kill-buffer t :jump-to-captured nil))))
(use-package org-agenda
:ensure nil
:after org
:bind
("C-c a" . org-agenda)
:custom
(org-agenda-hide-tags-regexp (regexp-opt '("project")))
(org-agenda-start-on-weekday 1))
(use-package org-auto-tangle
:ensure t
:hook (org-mode . org-auto-tangle-mode))
(use-package org-babel
:no-require t
:after (org)
:config
(org-babel-do-load-languages
'org-babel-load-languages
'((python . t)
(emacs-lisp . t)
(calc . t)
(shell . t)
(sql . t)
(dot . t)))
(remove-hook 'kill-emacs-hook 'org-babel-remove-temporary-directory)
(advice-add 'org-babel-edit-prep:emacs-lisp :after
#'(lambda (_info) (run-hooks 'emacs-lisp-mode-hook))))
(provide 'init-notes)
;;; init-notes.el ends here
|