Cumulative changes

This commit is contained in:
Max Schlueter 2023-04-18 16:32:56 +02:00
parent 218a8023cb
commit 0d1968fb55
6 changed files with 154 additions and 94 deletions

View File

@ -21,19 +21,14 @@
;;
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
;; font string. You generally only need these two:
(setq doom-font (font-spec :family "Fira Mono" :size 14.0))
(setq doom-font (font-spec :family "Fira Mono" :size 14.0)
doom-variable-pitch-font (font-spec :family "Liberation Serif" :size 16.0))
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
(setq doom-theme 'doom-solarized-light)
;; TODO: Restore session at startup
;; (add-hook 'window-setup-hook #'doom-load-session 'append)
;; If you use `org' and don't want your org files in the default location below,
;; change `org-directory'. It must be set before org loads!
;; https://github.com/hlissner/doom-emacs/issues/4832
;; (after! org
;; (defun +org--restart-mode-h ()
@ -47,6 +42,10 @@
;; change `org-directory'. It must be set before org loads!
(setq org-directory "~/Nextcloud/org/")
(after! org
;; Store org links to info pages
(add-to-list 'org-modules 'ol-info))
;; (defun max/org-gtd--incubate ()
;; "Process GTD inbox item by incubating it.
;; Allow the user apply user-defined tags from
@ -96,8 +95,8 @@
;; (autoload #'org-pomodoro-active-p "org-pomodoro" nil t)
(map! :map evil-org-agenda-mode-map
:m "c p" #'org-agenda-set-property)
;; (map! :map evil-org-agenda-mode-map
;; :m "c p" #'org-agenda-set-property)
;; (defun max/skip-habits ()
;; "Skip trees that are habits."
@ -227,7 +226,6 @@
(use-package! org-inline-pdf
:hook (org-mode . org-inline-pdf-mode))
(use-package! indium
:hook ((js-mode typescript-mode) . indium-interaction-mode)
:init
@ -235,8 +233,7 @@
:config
(map! :localleader
:map indium-interaction-mode-map
"I" #'indium-launch)
)
"I" #'indium-launch))
;; (use-package! ox-mm
;; :after org)
@ -310,6 +307,14 @@
;; ;; (add-hook 'kill-emacs-hook 'org-caldav-sync-at-close)
;; )
(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))
(setq +org-roam-open-buffer-on-find-file nil)
(after! org-roam
@ -363,10 +368,15 @@
citar-notes-paths `(,org-roam-directory)
citar-bibliography '("~/Nextcloud/Papers/library.bib")))
(use-package citar-org-roam
(use-package! citar-org-roam
:after citar org-roam
:no-require
:config (citar-org-roam-mode))
:config
(setq citar-org-roam-subdir "reference")
(citar-org-roam-mode))
(use-package! nov
:mode ("\\.epub\\'" . nov-mode))
;; Taken from: https://github.com/hlissner/doom-emacs/pull/6077
;; (use-package! org-roam-bibtex
@ -411,6 +421,9 @@
(after! projectile
(setq projectile-project-search-path '(("~/Projects" . 1))))
(after! typescript-mode
(setq typescript-indent-level 2))
;; (setq ns-auto-hide-menu-bar t)
;(defun switch-to-agenda ()
@ -511,6 +524,11 @@
(setq +workspaces-on-switch-project-behavior t)
(map! :leader
(:prefix "TAB"
:desc "Move workspace left" ">" #'+workspace/swap-right
:desc "Move workspace left" "<" #'+workspace/swap-left))
(after! evil-snipe
(setq evil-snipe-spillover-scope 'visible))
@ -523,6 +541,21 @@
(advice-add #'restart-emacs--get-emacs-binary :override #'max/restart-emacs--get-emacs-binary))
(after! yasnippet
(setq yas-triggers-in-field t))
(use-package! moinmoin-mode
:mode ("\\.wiki" . moinmoin-mode))
(use-package! centered-cursor-mode
:config
(setq ccm-recenter-at-end-of-file t)
(map! :leader :desc "Centered cursor mode" "t -" #'centered-cursor-mode))
(with-eval-after-load 'doom-themes
(doom-themes-neotree-config)
(setq doom-themes-neotree-enable-variable-pitch nil))
;; (server-start)
;; (use-package! mac-pseudo-daemon

View File

@ -103,6 +103,7 @@
;; Sign sent email automatically
;; (add-hook 'message-send-hook 'mml-secure-message-sign-smime)
(require 'khalel-icalendar)
)
;; (defun max/mu4e-view-import-attachment-calendar (msg attnum)

99
gtd.el
View File

@ -1,18 +1,19 @@
;;; gtd.el -*- lexical-binding: t; -*-
(require 'org)
(setq org-return-follows-link t
(after! org
(setq org-return-follows-link t
org-complete-tags-always-offer-all-agenda-tags t
org-agenda-files (append (mapcar 'file-truename
(file-expand-wildcards (concat org-directory "gtd/*.org")))
(list (expand-file-name (funcall #'gtd-get-current-journal) org-directory))))
(setq org-capture-templates
`(("i" "Inbox" entry (file "gtd/inbox.org")
org-agenda-files (mapcar 'file-truename
(file-expand-wildcards (concat org-directory "gtd/*.org"))))
;; org-agenda-files (append (mapcar 'file-truename
;; (file-expand-wildcards (concat org-directory "gtd/*.org")))
;; (list (expand-file-name (funcall #'gtd-get-current-journal) org-directory))))
(setq org-capture-templates
`(("i" "Inbox" entry (file "gtd/inbox.org")
,(concat "* %?\n"
":PROPERTIES:\n:CREATED: %U\n:END:") :prepend t)
("j" "Journal" entry (file+datetree ,(gtd-get-current-journal))
;; ("j" "Journal" entry (file+datetree ,(funcall #'gtd-get-current-journal))
("j" "Journal" entry (file+datetree "gtd/journal.org")
,(concat "* %?\n"
":PROPERTIES:\n:CREATED: %U\n:END:"))
("@" "Inbox [mu4e]" entry (file "gtd/inbox.org")
@ -20,12 +21,12 @@
,(concat "* Process %a %?\n"
":PROPERTIES:\n:CREATED: %U\n:END:") :prepend t)))
(setq org-refile-allow-creating-parent-nodes 'confirm
(setq org-refile-allow-creating-parent-nodes 'confirm
org-refile-target-verify-function (lambda (&rest _) (null (org-get-todo-state)))
;; org-refile-target-verify-function nil
;; org-refile-targets '(("tasks.org" . (:maxlevel . 2))))
org-refile-targets '(("tasks.org" . (:maxlevel . 2))
("someday.org" . (:level . 0))))
("someday.org" . (:level . 0)))))
(defun gtd-capture-inbox ()
(interactive)
@ -50,6 +51,7 @@
;; Insert CREATED property timestamps for non-captured headlines
(use-package! org-expiry
:after org
:config
(map! :map org-mode-map
"C-c c" #'org-expiry-insert-created)
@ -57,13 +59,15 @@
;; Automatically trigger state changes in projects
(use-package! org-edna
:after org
:config
(setq org-edna-use-inheritance t)
(org-edna-mode))
(org-edna-mode)
(setq org-edna-use-inheritance t))
(use-package! org-super-agenda
:after org
:config
(org-super-agenda-mode)
(setq org-agenda-window-setup 'current-window
org-agenda-restore-windows-after-quit t
org-agenda-block-separator nil
@ -77,6 +81,7 @@
((org-agenda-skip-function
'(org-agenda-skip-entry-if 'deadline))
(org-deadline-warning-days 0)))
;; TODO combine the two queries into one
(tags "inbox" ((org-agenda-overriding-header "")
(org-agenda-prefix-format " %?-14t% s")
(org-super-agenda-groups
@ -84,7 +89,7 @@
:anything t)))))
(alltodo "" ((org-agenda-overriding-header "")
(org-agenda-prefix-format " %i %-14:c ")
(org-agenda-sorting-strategy '(category-up))
;; (org-agenda-sorting-strategy '(category-up))
(org-agenda-skip-function
'(org-agenda-skip-entry-if 'scheduled))
(org-super-agenda-groups
@ -99,7 +104,7 @@
(:discard (:anything t)))))))))))
;; Automatically save gtd files after some actions on them
;; Taken from: https://www.labri.fr/perso/nrougier/GTD/index.html
;; Source: https://www.labri.fr/perso/nrougier/GTD/index.html
(defun gtd-save-org-buffers ()
"Save `org-agenda-files' buffers without user confirmation.
See also `org-save-all-org-buffers'"
@ -110,31 +115,28 @@ See also `org-save-all-org-buffers'"
t)))
(message "Saving org-agenda-files buffers... done"))
(advice-add 'org-refile :after (lambda (&rest _) (gtd-save-org-buffers)))
(advice-add 'org-todo :after (lambda (&rest _) (gtd-save-org-buffers)))
(advice-add 'org-add-note :after (lambda (&rest _) (gtd-save-org-buffers)))
(advice-add 'org-clock-in :after (lambda (&rest _) (gtd-save-org-buffers)))
(map! :map 'override
"<f1>" #'gtd-agenda)
(after! org
(advice-add 'org-refile :after (lambda (&rest _) (gtd-save-org-buffers)))
(advice-add 'org-todo :after (lambda (&rest _) (gtd-save-org-buffers)))
(advice-add 'org-add-note :after (lambda (&rest _) (gtd-save-org-buffers)))
(advice-add 'org-clock-in :after (lambda (&rest _) (gtd-save-org-buffers))))
(defun gtd-agenda ()
(interactive)
(org-agenda nil "g"))
;; (defun gtd-archive-subtree ()
;; "Archive the current subtree to a yearly journal."
;; (when (not (equal "DONE" (org-get-todo-state)))
;; (org-todo "DONE"))
(map! :map 'override
"<f1>" #'gtd-agenda)
;; Archiving
;;
;;; Archiving
(defun gtd-get-current-journal ()
"Returns journal file as a string for the current year."
(let ((year (number-to-string (caddr (calendar-current-date)))))
(concat "journal/" year ".org")))
;; Store archived entries in <current_file>.org_archive in a datetree
(after! org
(setq org-archive-location "%s_archive::datetree/"))
(setq org-archive-location (concat (funcall #'gtd-get-current-journal) "::datetree/"))
;;
;;; Calendar
(defun max/khalel--insert-import-file-header (sdate edate)
"Insert imported events file header information into current buffer.
@ -146,12 +148,7 @@ the current import date range."
(insert (format "*Events scheduled between %s and %s*:\n" sdate edate)))
(use-package! khalel
:commands (khalel-export-org-subtree-to-calendar
khalel-import-events
khalel-edit-calender-event
khalel-add-capture-template)
:init
(khalel-add-capture-template)
:after org
:config
(advice-add #'khalel--insert-import-file-header :override #'max/khalel--insert-import-file-header)
(advice-add #'khalel-import-events :around #'doom-shut-up-a)
@ -160,6 +157,16 @@ the current import date range."
khalel-import-start-date "-15d"
khalel-import-end-date "+30d"
khalel-import-org-file (expand-file-name "gtd/calendar.org" org-directory)
khalel-import-format "* {title} {cancelled} :{calendar}:\n\
:PROPERTIES:\n:CALENDAR: {calendar}\n\
:LOCATION: {location}\n\
:ID: {uid}\n\
:END:\n\
<{start-date-long} {start-time}>--<{end-date-long} {end-time}>\n\
{description}\n\
[[elisp:(khalel-edit-calendar-event)][Edit this event]]\
[[elisp:(progn (khalel-run-vdirsyncer) (khalel-import-events))]\
[Sync and update all]]\n"
khalel-import-org-file-header "#+TITLE: Calendar\n\n\
*NOTE*: this file has been generated by \
[[elisp:(khalel-import-events)][khalel-import-events]] \
@ -173,11 +180,21 @@ to synchronize with remote calendars.
Consider adding this file to your list of agenda files so that events \
show up there.\n\n"))
(setq org-clock-persist t
(after! org
(khalel-add-capture-template))
(defun gtd-capture-event ()
(interactive)
(org-capture nil "e"))
(map! "C-c e" #'gtd-capture-event)
(after! org
(setq org-clock-persist t
;; Useful when clocking in on a waiting task
org-clock-in-switch-to-state "NEXT"
org-clock-out-when-done '("DONE" "CNCL" "WAIT")
org-clock-persist-query-resume nil)
org-clock-persist-query-resume nil))
(use-package! org-clock-convenience
:after org

23
init.el
View File

@ -39,7 +39,7 @@
;;minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API
;; nav-flash ; blink the current line after jumping
;;neotree ; a project drawer, like NERDTree for vim
neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup +defaults +all) ; tame sudden yet inevitable temporary windows
;;tabs ; an tab bar for Emacs
@ -55,7 +55,7 @@
(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness
(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
multiple-cursors ; editing in many places at once
@ -88,15 +88,15 @@
biblio ; Writes a PhD for you (citation needed)
;;debugger ; FIXME stepping through code, to help you add bugs
direnv
;;docker
docker
;;editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
;;gist ; interacting with github gists
lookup ; navigate your code and its documentation
;;lsp ; M-x vscode
lsp ; M-x vscode
(magit +forge) ; a git porcelain for Emacs
;;make ; run make tasks from Emacs
make ; run make tasks from Emacs
pass ; password manager for nerds
pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
@ -104,6 +104,7 @@
;;taskrunner ; taskrunner for all your projects
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
tree-sitter ; syntax and parsing, sitting in a tree...
;;upload ; map local to remote projects via ssh/ftp
:os
@ -136,9 +137,9 @@
;;(haskell +lsp) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ;
;;json ; At least it ain't XML
json ; At least it ain't XML
(java +meghanada) ; the poster child for carpal tunnel syndrome
(javascript +lsp) ; all(hope(abandon(ye(who(enter(here))))))
(javascript +lsp +tree-sitter) ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
(latex +latexmk) ; writing papers in Emacs has never been so fun
@ -149,11 +150,11 @@
;;nim ; python + lisp at the speed of c
nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
(org +noter +roam2 +dragndrop +pomodoro) ; organize your plain life in plain text
(org +noter +journal +roam2 +dragndrop +pomodoro) ; organize your plain life in plain text
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
;;python ; beautiful is better than ugly
(python +lsp +poetry) ; beautiful is better than ugly
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6
@ -168,8 +169,8 @@
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
;;web ; the tubes
;;yaml ; JSON, but readable
web ; the tubes
yaml ; JSON, but readable
;;zig ; C, but simpler
:email

View File

@ -50,10 +50,10 @@
;; our package manager can't deal with; see raxod502/straight.el#279)
;(package! builtin-package :recipe (:branch "develop"))
(package! org-inline-pdf :pin "b2dfbf41efac55edacde8a8a6bd0275418de6454")
(package! org-clock-convenience :pin "efc9773a8dedf834cf4a78fb6f5f8fffe55ef8eb")
(package! org-roam-bibtex :pin "3ac2445f431bc39aa0ca5abfc80e28c0c06f0738")
;; (package! org-super-agenda)
(package! org-inline-pdf)
(package! org-clock-convenience)
;; (package! org-roam-bibtex :pin "3ac2445f431bc39aa0ca5abfc80e28c0c06f0738")
(package! org-super-agenda)
;; (package! mu4e-alert)
;; (package! clip2org)
(package! centered-cursor-mode)
@ -65,9 +65,17 @@
;; (package! mac-pseudo-daemon)
;; (package! nix-docbook-mode)
(package! base16-theme)
(package! citar-org-roam
:recipe (:host github :repo "emacs-citar/citar-org-roam"))
(package! citar-org-roam)
;; (package! citar-org-roam
;; :recipe (:host github :repo "emacs-citar/citar-org-roam"))
(package! pdf-tools :built-in 'prefer)
(package! org-gtd)
(package! nov)
;; (package! org-gtd)
(package! khalel)
(package! jl-encrypt
:recipe (:host gitlab :repo "lechten/defaultencrypt"))
;; (package! weblorg)
;; org-roam-ui keeps up with the latest features in org-roam
(unpin! org-roam)
(package! org-roam-ui)

View File

@ -1,6 +1,6 @@
# -*- mode: snippet -*-
# name: Liele Grüße
# key: lg,
# name: Mit freundlichen Grüßen
# key: mfg,
# --
Mit freundlichen Grüßen,
Max Schlüter