2023-08-12 16:45:26 +02:00
( setq user-full-name " Phil Bajsicki " )
2023-04-15 17:25:11 +02:00
2023-12-20 03:08:40 +01:00
;; must be set before `org` is loaded
( setq org-directory " ~/enc/org/ " )
( setq org-agenda-files ( directory-files-recursively " ~/enc/org/ " " .org$ " ) )
2023-08-12 16:45:26 +02:00
( setq global-auto-revert-mode t )
( setq auth-sources ' ( " ~/.authinfo " ) )
2023-09-21 02:46:05 +02:00
( setq-default backup-inhibited t )
2023-04-15 17:25:11 +02:00
2023-09-21 02:46:05 +02:00
( setq locale-coding-system 'utf-8 )
( set-terminal-coding-system 'utf-8 )
( set-keyboard-coding-system 'utf-8 )
( set-clipboard-coding-system 'utf-8 )
( prefer-coding-system 'utf-8 )
2023-12-20 03:08:40 +01:00
( setq-default indent-tabs-mode t )
2023-08-14 15:56:03 +02:00
2023-10-15 22:16:55 +02:00
( setq langtool-java-bin " /usr/bin/java " )
2023-08-12 16:45:26 +02:00
( after! counsel
( setq counsel-outline-display-style 'title ) )
2023-04-15 17:25:11 +02:00
2023-08-22 13:06:03 +02:00
( load-theme 'doom-one t )
( doom-themes-neotree-config )
( doom-themes-org-config )
2024-06-06 01:26:00 +02:00
( setq doom-themes-enable-bold t
doom-themes-enable-italic t
doom-font ( font-spec :family " Iosevka " :size 14 )
doom-big-font ( font-spec :family " Iosevka " :size 16 )
;; doom-variable-pitch-font (font-spec :family "Iosevka" :size 14)
doom-unicode-font ( font-spec :family " Iosevka " ) )
;; doom-serif-font (font-spec :family "IBM Plex Mono" :size 10 :weight 'light))
;; (set-face-attribute 'default nil :family "Iosevka")
;; (set-face-attribute 'variable-pitch nil :family "Iosevka Aile")
;; (set-face-attribute 'org-modern-symbol nil :family "Iosevka")
2023-10-15 22:16:55 +02:00
( ligature-set-ligatures 't ' ( " www " ) )
;; Enable traditional ligature support in eww-mode, if the
;; `variable-pitch' face supports it
( ligature-set-ligatures 'eww-mode ' ( " ff " " fi " " ffi " ) )
;; Enable all Cascadia Code ligatures in programming modes
( ligature-set-ligatures 'org-mode ' ( " |||> " " <||| " " <==> " " <!-- " " #### " " ~~> " " *** " " ||= " " ||> "
" ::: " " ::= " " =:= " " === " " ==> " " =!= " " =>> " " =<< " " =/= " " !== "
" !!. " " >=> " " >>= " " >>> " " >>- " " >-> " " ->> " " --> " " --- " " -<< "
" <~~ " " <~> " " <*> " " <|| " " <|> " " <$> " " <== " " <=> " " <=< " " <-> "
" <-- " " <-< " " <<= " " <<- " " <<< " " <+> " " </> " " ### " " #_( " " ..< "
" ... " " +++ " " /== " " /// " " _|_ " " www " " && " " ^= " " ~~ " " ~@ " " ~= "
" ~> " " ~- " " ** " " *> " " */ " " || " " |} " " |] " " |= " " |> " " |- " " {| "
" [| " " ]# " " :: " " := " " :> " " :< " " $> " " == " " => " " != " " !! " " >: "
" >= " " >> " " >- " " -~ " " -| " " -> " " -- " " -< " " <~ " " <* " " <| " " <: "
" <$ " " <= " " <> " " <- " " << " " <+ " " </ " " #{ " " #[ " " #: " " #= " " #! "
" ## " " #( " " #? " " #_ " " %% " " .= " " .- " " .. " " .? " " +> " " ++ " " ?: "
" ?= " " ?. " " ?? " " ;; " " /* " " /= " " /> " " // " " __ " " ~~ " " (* " " *) "
" \\ \\ " " :// " ) )
;; Enables ligature checks globally in all buffers. You can also do it
;; per mode with `ligature-mode'.
( global-ligature-mode t )
( set-frame-parameter nil 'alpha-background 85 )
( add-to-list 'default-frame-alist ' ( alpha-background . 85 ) )
2023-04-15 17:25:11 +02:00
( setq display-line-numbers-type 'relative )
( setq next-screen-context-lines 4 )
2023-09-21 02:46:05 +02:00
( setq-default global-visual-line-mode t )
( setq x-stretch-cursor t )
( setq column-number-mode t )
2023-04-15 17:25:11 +02:00
2024-06-06 01:26:00 +02:00
( setq-default calendar-week-start-day 1 )
2023-09-21 02:46:05 +02:00
( global-set-key " \C -g " 'keyboard-quit )
( global-set-key " \C -cu " 'browse-url-chrome )
2023-04-15 17:25:11 +02:00
2023-12-20 03:08:40 +01:00
( setq straight-repository-branch " develop " )
2023-04-15 17:25:11 +02:00
2023-12-20 03:08:40 +01:00
( use-package! pdf-tools
:defer t
:commands ( pdf-loader-install )
:mode " \\ .pdf \\ ' "
:bind ( :map pdf-view-mode-map
( " n " . pdf-view-next-line-or-next-page )
( " p " . pdf-view-previous-line-or-previous-page )
( " C-= " . pdf-view-enlarge )
( " C-- " . pdf-view-shrink ) )
:init ( pdf-loader-install )
:config ( add-to-list 'revert-without-query " .pdf " ) )
( add-hook 'pdf-view-mode-hook #' ( lambda ( ) ( interactive ( display-line-numbers-mode ) ) ) )
( add-to-list 'auto-mode-alist
' ( " \\ .org \\ ' " . org-mode ) )
( setq org-image-actual-width nil )
( setq org-enforce-todo-dependencies t )
( setq org-reverse-note-order nil )
( setq org-deadline-warning-days 7 )
( setq org-blank-before-new-entry ( quote ( ( heading . t )
( plain-list-item . nil ) ) ) )
2024-06-06 01:26:00 +02:00
( setq org-num-mode t )
2023-09-21 02:46:05 +02:00
( setq org-todo-repeat-to-state " LOOP " )
( setq org-remove-highlights-with-change nil )
2024-06-06 01:26:00 +02:00
( setq org-read-date-prefer-future t )
2023-09-21 02:46:05 +02:00
( setq org-special-ctrl-a/e t )
( setq org-special-ctrl-k t )
( setq org-yank-adjusted-subtrees t )
2024-06-06 01:26:00 +02:00
( setq org-M-RET-may-split-line ( quote ( default . t ) ) )
2023-09-21 02:46:05 +02:00
( setq org-log-done ( quote time ) )
( setq org-log-into-drawer t )
( setq org-catch-invisible-edits " smart " )
( setq org-use-property-inheritance nil )
2023-10-15 22:16:55 +02:00
( setq org-duration-format 'h:mm )
2023-09-21 02:46:05 +02:00
( setq org-hierarchical-todo-statistics t )
2023-12-20 03:08:40 +01:00
( defun my-org-tree-to-indirect-buffer ( &optional arg )
" Create indirect buffer and narrow it to current subtree.
The buffer is named after the subtree heading, with the filename
appended. If a buffer by that name already exists, it is
selected instead of creating a new buffer. "
( interactive " P " )
( let* ( ( new-buffer-p )
( pos ( point ) )
( buffer-name ( let* ( ( heading ( org-get-heading t t ) )
( level ( org-outline-level ) )
( face ( intern ( concat " outline- " ( number-to-string level ) ) ) )
( heading-string ( propertize ( org-link-display-format heading )
'face face ) ) )
( concat heading-string " :: " ( buffer-name ) ) ) )
( new-buffer ( or ( get-buffer buffer-name )
( prog1 ( condition-case nil
( make-indirect-buffer ( current-buffer ) buffer-name 'clone )
( error ( make-indirect-buffer ( current-buffer ) buffer-name ) ) )
( setq new-buffer-p t ) ) ) ) )
( switch-to-buffer new-buffer )
( when new-buffer-p
;; I don't understand why setting the point again is necessary, but it is.
( goto-char pos )
( rename-buffer buffer-name )
( org-narrow-to-subtree ) ) ) )
( advice-add 'org-tree-to-indirect-buffer :override 'my-org-tree-to-indirect-buffer )
( setq org-element--cache-self-verify nil )
2023-09-21 02:46:05 +02:00
2024-06-06 01:26:00 +02:00
( setq org-image-actual-width ' ( 600 ) )
( package-initialize )
( menu-bar-mode -1 )
( tool-bar-mode -1 )
( scroll-bar-mode -1 )
;; (modus-themes-load-operandi)
;; Choose some fonts
;; (set-face-attribute 'default nil :family "Iosevka")
;; (set-face-attribute 'variable-pitch nil :family "Iosevka Aile")
;; (set-face-attribute 'org-modern-symbol nil :family "Iosevka")
;; Add frame borders and window dividers
2023-09-21 02:46:05 +02:00
( modify-all-frames-parameters
2024-06-06 01:26:00 +02:00
' ( ( right-divider-width . 0 )
2023-09-21 02:46:05 +02:00
( internal-border-width . 0 ) ) )
( dolist ( face ' ( window-divider
window-divider-first-pixel
window-divider-last-pixel ) )
( face-spec-reset-face face )
( set-face-foreground face ( face-attribute 'default :background ) ) )
( set-face-background 'fringe ( face-attribute 'default :background ) )
( setq
;; Edit settings
org-auto-align-tags nil
org-tags-column 0
org-catch-invisible-edits 'show-and-error
2024-06-06 01:26:00 +02:00
org-special-ctrl-a/e t
2023-09-21 02:46:05 +02:00
org-insert-heading-respect-content t
;; Org styling, hide markup etc.
org-hide-emphasis-markers t
org-pretty-entities t
;; Agenda styling
org-agenda-tags-column 0
org-agenda-block-separator ?─
org-agenda-time-grid
' ( ( daily today require-timed )
( 800 1000 1200 1400 1600 1800 2000 )
" ┄┄┄┄┄ " " ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ " )
org-agenda-current-time-string
2024-06-06 01:26:00 +02:00
" ◀── now ───────────────────────────────────────────────── " )
;; Ellipsis styling
;; (setq org-ellipsis "…")
;; (set-face-attribute 'org-ellipsis nil :inherit 'default :box nil)
2023-09-21 02:46:05 +02:00
( global-org-modern-mode )
2023-04-15 17:25:11 +02:00
2024-06-06 01:26:00 +02:00
( defun my-dir-to-org ( dir org-file )
" Create a file ORG-FILE which has all txt files in DIR as linked headlines
and the contents of the files below the headlines. "
( interactive " DDirectory to convert: \n FFilename: " )
( let ( ( files ( directory-files
dir t " .* \\ .txt \\ ' " ) ) )
( with-temp-file org-file
( dolist ( file files )
( insert ( concat " * " ( file-name-nondirectory file ) " \n \n " ) )
( insert-file-contents file )
( goto-char ( point-max ) )
( insert " \n " ) ) ) ) )
( defun my-dir-to-org-with-links ( dir org-file )
" Create a file ORG-FILE which has all txt files in DIR as linked headlines
and the contents of the files below the headlines. "
( interactive " DDirectory to convert: \n FFilename: " )
( let ( ( files ( directory-files
dir t " .* \\ .txt \\ ' " ) ) )
( with-temp-file org-file
( dolist ( file files )
( insert ( concat " * " " [[ " file " ][ " ( file-name-nondirectory file ) " ]] \n \n " ) )
( insert-file-contents file )
( goto-char ( point-max ) )
( insert " \n " ) ) ) ) )
( defun my-mass-conversion ( source-dir target-dir )
" Create one org file per directory of SOURCE-DIR inside TARGET-DIR. "
( interactive " DDirectory to convert: \n DTarget Directory: " )
( let ( ( dirs-full
( remove-if-not #' file-directory-p
( directory-files
source-dir t
directory-files-no-dot-files-regexp ) ) ) )
( mapc ( lambda ( dir )
( my-dir-to-org dir
( concat target-dir
( file-name-base dir ) " .org " ) ) )
dirs-full ) ) )
2023-08-12 16:45:26 +02:00
( setq-default org-enforce-todo-dependencies t )
2023-09-21 02:46:05 +02:00
( setq org-enforce-todo-checkbox-dependencies t )
2023-04-15 17:25:11 +02:00
2024-06-06 01:26:00 +02:00
( require 'org-auto-tangle )
( add-hook 'org-mode-hook 'org-auto-tangle-mode )
2023-09-21 02:46:05 +02:00
( add-hook 'write-file-hooks 'time-stamp )
( add-hook 'org-mode-hook
( lambda ( )
;; yasnippet
;;disabled; (make-variable-buffer-local 'yas/trigger-key)
;;disabled; (org-set-local 'yas/trigger-key [tab])
;;disabled; (define-key yas/keymap [tab] 'yas/next-field-group)
;; flyspell mode for spell checking everywhere
;;disabled; (flyspell-mode 1)
;; auto-fill mode on
( auto-fill-mode 1 ) ) )
2023-08-22 13:06:03 +02:00
2024-06-06 01:26:00 +02:00
( add-to-list 'font-lock-extra-managed-props 'display )
( font-lock-add-keywords
'org-mode
' ( ( " \\ ({{{[a-zA-Z#%)(_-+0-9]+}}} \\ ) " 0
` ( face nil display
, ( format " %s "
( let* ( ( input-str ( match-string 0 ) )
( el ( with-temp-buffer
( insert input-str )
( goto-char ( point-min ) )
( org-element-context ) ) )
( text ( org-macro-expand el org-macro-templates ) ) )
( if text
text
input-str ) ) ) ) ) ) )
2023-08-12 16:45:26 +02:00
( global-set-key " \C -cl " 'org-store-link )
( global-set-key " \C -ch " 'counsel-org-link )
( global-set-key " \C -cne " 'elgantt-open )
2023-08-22 13:06:03 +02:00
( global-set-key " \C -cnn " 'org-capture )
2023-04-15 17:25:11 +02:00
2023-08-12 22:48:12 +02:00
( global-set-key " \C -cia " ' ( lambda ( ) ( interactive )
2023-09-21 02:46:05 +02:00
( org-time-stamp ' ( 16 ) ) ) )
2023-08-12 22:48:12 +02:00
( global-set-key " \C -cii " ' ( lambda ( ) ( interactive )
2023-09-21 02:46:05 +02:00
( org-time-stamp-inactive ' ( 16 ) ) ) )
2023-08-22 13:06:03 +02:00
2024-07-29 12:31:22 +02:00
( after! org-mode
( add-hook! 'org-insert-heading-hook
2024-06-06 01:26:00 +02:00
( if
( or
( string-match-p " journal.org " buffer-file-name )
( string-match-p " money " buffer-file-name )
( string-match-p " therapy.org " buffer-file-name ) )
( ( lambda ( )
( interactive )
( org-time-stamp-inactive ' ( 16 ) )
( newline ) ) )
( setq org-insert-heading-hook nil )
) ) )
2023-12-20 03:08:40 +01:00
( setq org-todo-keywords
' ( ( sequence
2024-06-06 01:26:00 +02:00
" INBOX(i!) "
" TASK(t!) " ; A task that needs doing & is ready to do
" PROJ(p!) " ; A project, which usually contains other tasks
" LOOP(r!) " ; A recurring task
" WAIT(w!) " ; Something external is holding up this task
" HOLD(h!) " ; This task is paused/on hold because of me
2023-12-20 03:08:40 +01:00
" | "
2024-06-06 01:26:00 +02:00
" DONE(d!@) " ; Task successfully completed
" KILL(k!@) " ) ; Task was cancelled, aborted or is no longer applicable
2023-12-20 03:08:40 +01:00
( sequence
" DECIDE() " ; for making decisions
" | "
2024-06-06 01:26:00 +02:00
" OKAY(o!) " ; okay as-is
" YES(y!) " ; take action
" NO(n!) " ) ) ; don't take action
2023-12-20 03:08:40 +01:00
org-todo-keyword-faces
' (
( " INBOX " :foreground " cyan " :weight bold )
( " TASK " :foreground " purple " :weight bold )
( " PROJ " :foreground " violet " :weight bold )
( " LOOP " :foreground " magenta " :weight bold )
( " WAIT " :foreground " yellow " :weight bold )
( " HOLD " :foreground " orange " :weight bold )
( " DONE " :foreground " green " :weight bold )
( " KILL " :foreground " grey " :weight bold ) ) )
2023-09-21 02:46:05 +02:00
2024-06-06 01:26:00 +02:00
( setq org-capture-templates ' ( ( " t " " inbox " entry ( file+headline " ~/enc/org/agenda.org " " Inbox " ) " * %i%? " )
( " i " " idea " entry ( file+headline " ~/enc/org/agenda.org " " Ideas " ) " * %? " )
( " d " " reminder " entry ( file+headline " ~/enc/org/agenda.org " " Reminders " ) " * %i%? \n %U " )
( " p " " person " entry ( file+headline " ~/enc/org/people.org " " Sort " )
2023-08-14 15:56:03 +02:00
" * %(org-contacts-template-name)
2023-04-15 17:25:11 +02:00
:PROPERTIES:
:EMAIL: % ( org-contacts-template-email )
2024-06-06 01:26:00 +02:00
:PHONE:
2023-04-15 17:25:11 +02:00
:ALIAS:
:NICKNAME:
:IGNORE:
:ICON:
:NOTE:
:ADDRESS:
:BIRTHDAY:
:END: " )))
2023-08-12 16:45:26 +02:00
2024-06-06 01:26:00 +02:00
( setq org-archive-default-command #' org-archive-subtree-hierarchically )
( defun org-archive-subtree-hierarchically ( &optional prefix )
( interactive " P " )
( let* ( ( fix-archive-p ( and ( not prefix )
( not ( use-region-p ) ) ) )
( afile ( car ( org-archive--compute-location
( or ( org-entry-get nil " ARCHIVE " 'inherit ) org-archive-location ) ) ) )
( buffer ( or ( find-buffer-visiting afile ) ( find-file-noselect afile ) ) ) )
( org-archive-subtree prefix )
( when fix-archive-p
( with-current-buffer buffer
( goto-char ( point-max ) )
( while ( org-up-heading-safe ) )
( let* ( ( olpath ( org-entry-get ( point ) " ARCHIVE_OLPATH " ) )
( path ( and olpath ( split-string olpath " / " ) ) )
( level 1 )
tree-text )
( when olpath
( org-mark-subtree )
( setq tree-text ( buffer-substring ( region-beginning ) ( region-end ) ) )
( let ( this-command ( inhibit-message t ) ) ( org-cut-subtree ) ) ; we don’ t want to see "Cut subtree" messages
( goto-char ( point-min ) )
( save-restriction
( widen )
( -each path
( lambda ( heading )
( if ( re-search-forward
( rx-to-string
` ( : bol ( repeat , level " * " ) ( 1+ " " ) , heading ) ) nil t )
( org-narrow-to-subtree )
( goto-char ( point-max ) )
( unless ( looking-at " ^ " )
( insert " \n " ) )
( insert ( make-string level ?* )
" "
heading
" \n " ) )
( cl-incf level ) ) )
( widen )
( org-end-of-subtree t t )
( org-paste-subtree level tree-text ) ) ) ) ) ) ) )
( setq my-linkcolor-org " wheat3 " )
( setq my-linkcolor-file " MediumSeaGreen " )
( setq my-linkcolor-web " DeepSkyBlue " )
( defun my-set-linkcolors ( )
" Defines the colors of various link colors "
( interactive )
;; Org links --------------------------------------------------------------------------
( org-link-set-parameters " id " :face ` ( :foreground , my-linkcolor-org :underline t ) )
( org-link-set-parameters " contact " :face ` ( :foreground , my-linkcolor-org :underline t ) )
;; File links --------------------------------------------------------------------------
( org-link-set-parameters " file " :face ` ( :foreground , my-linkcolor-file :underline t ) )
;; defined elsewhere;; (org-link-set-parameters "tsfile" :face '`(:foreground "DarkSeaGreen" :underline t))
( org-link-set-parameters " pdf " :face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " EPA " :face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " EPAAFO " :face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " JAFO " :face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " DAKEPA " :face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " BMTSK " :face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " ISO " :face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " gemSpec_DS_Anbieter "
:face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " gemSpec_Net "
:face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " gemSpec_PKI "
:face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " gemSpec_IDP_Dienst "
:face ` ( :foreground , my-linkcolor-file :underline t ) )
( org-link-set-parameters " messageid "
:face ` ( :foreground , my-linkcolor-file :underline t ) )
;; Web links --------------------------------------------------------------------------
( org-link-set-parameters " http " :face ` ( :foreground , my-linkcolor-web :underline t ) )
( org-link-set-parameters " https " :face ` ( :foreground , my-linkcolor-web :underline t ) )
)
( defun my-set-linkcolors ( )
" Defines the colors of various link colors "
( interactive )
;; Org links --------------------------------------------------------------------------
( org-link-set-parameters " id " :face ' ( :foreground " wheat3 " :underline t ) )
( org-link-set-parameters " contact " :face ' ( :foreground " wheat3 " :underline t ) )
;; File links --------------------------------------------------------------------------
( org-link-set-parameters " file " :face ' ( :foreground " MediumSeaGreen " :underline t ) )
;; defined elsewhere;; (org-link-set-parameters "tsfile" :face ''(:foreground "DarkSeaGreen" :underline t))
( org-link-set-parameters " pdf " :face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " EPA " :face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " EPAAFO " :face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " JAFO " :face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " DAKEPA " :face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " BMTSK " :face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " gemSpec_DS_Anbieter "
:face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " gemSpec_Net "
:face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " gemSpec_PKI "
:face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " gemSpec_IDP_Dienst "
:face ' ( :foreground " MediumSeaGreen " :underline t ) )
( org-link-set-parameters " messageid "
:face ' ( :foreground " MediumSeaGreen " :underline t ) )
;; Web links --------------------------------------------------------------------------
( org-link-set-parameters " http " :face ' ( :foreground " DeepSkyBlue " :underline t ) )
( org-link-set-parameters " https " :face ' ( :foreground " DeepSkyBlue " :underline t ) )
)
( my-set-linkcolors ) ;; set colors when loading
( add-to-list 'load-path " /usr/share/emacs/site-lisp/mu4e/ " )
( setq mu4e-change-filenames-when-moving t )
( setq mu4e-update-interval ( * 10 60 ) )
( setq mu4e-get-mail-command " mbsync -a " )
( setq mu4e-maildir " ~/enc/.mail " )
( setq mu4e-drafts-folder " /Drafts " )
( setq mu4e-sent-folder " /Sent " )
( setq mu4e-refile-folder " /Refile " )
( setq mu4e-trash-folder " /Trash " )
( mu4e t )
;; (load (expand-file-name "~/.roswell/helper.el"))
( setq inferior-lisp-program " sbcl --dynamic-space-size 8192 -Q -l ~/.sbclrc " )
( global-set-key ( kbd " C-S-c C-S-c " ) 'mc/edit-lines )
( global-set-key ( kbd " C-> " ) 'mc/mark-next-like-this )
( global-set-key ( kbd " C-< " ) 'mc/mark-previous-like-this )
( global-set-key ( kbd " C-c C-< " ) 'mc/mark-all-like-this )
2023-10-15 22:16:55 +02:00
( use-package! org-transclusion
:after org
:init
( map!
2024-06-06 01:26:00 +02:00
:map global-map " <f12> " #' org-transclusion-add
2023-10-15 22:16:55 +02:00
:leader
:prefix " n "
:desc " Org Transclusion Mode " " t " #' org-transclusion-mode ) )
2023-09-21 02:46:05 +02:00
( add-hook 'org-babel-after-execute-hook 'org-display-inline-images )
2023-12-20 03:08:40 +01:00
( with-eval-after-load 'ox-latex
( add-to-list 'org-latex-classes
2024-06-06 01:26:00 +02:00
' ( " tufte-handout "
" \\ documentclass[nobib]{tufte-handout}
\\usepackage{nicefrac}
\\usepackage{units}
[ NO-DEFAULT-PACKAGES ]
[ EXTRA ] "
( " \\ section{%s} " . " \\ section*{%s} " )
( " \\ subsection{%s} " . " \\ subsection*{%s} " )
( " \\ subsubsection{%s} " . " \\ subsubsection*{%s} " )
( " \\ paragraph{%s} " . " \\ paragraph*{%s} " )
( " \\ subparagraph{%s} " . " \\ subparagraph*{%s} " ) )
' ( " memoir "
2023-12-20 03:08:40 +01:00
" \\ documentclass{memoir} "
( " \\ chapter{%s} " . " \\ chapter*{%s} " )
( " \\ section{%s} " . " \\ section*{%s} " )
( " \\ subsection{%s} " . " \\ subsection*{%s} " )
( " \\ subsubsection{%s} " . " \\ subsubsection*{%s} " ) ) ) )
2023-09-21 02:46:05 +02:00
( defun org-super-links-quick-related ( )
( interactive )
( let ( ( org-super-links-link-prefix " \n related: " ) )
( org-super-links-link ) ) )
( setq org-super-links-related-into-drawer t )
( setq org-super-links-related-drawer-default-name " RELATED "
org-super-links-link-prefix 'org-super-links-link-prefix-timestamp )
( setq org-export-with-broken-links t ) ;; avoiding error on export
( global-unset-key ( kbd " C-c l " ) )
( global-set-key ( kbd " C-c l l " ) 'org-super-links-link )
( global-set-key ( kbd " C-c l s " ) 'org-super-links-store-link )
( global-set-key ( kbd " C-c l i " ) 'org-super-links-insert-drawer-link )
( global-set-key ( kbd " C-c l r " ) 'org-super-links-quick-related )
( global-set-key ( kbd " C-c l d " ) 'org-super-links-delete-link )
2024-06-06 01:26:00 +02:00
( org-wild-notifier-mode )
( setq alert-default-style 'libnotify
org-wild-notifier-alert-time ' ( 0 5 15 60 )
org-wild-notifier-keyword-whitelist nil
;; good for testing
org-wild-notifier--alert-severity 'high
alert-fade-time 50
)
2023-04-15 17:25:11 +02:00
2023-06-12 15:07:15 +02:00
( setq org-refile-targets ' ( ( nil :maxlevel . 9 )
( org-agenda-files :maxlevel . 9 ) ) )
2023-08-12 16:45:26 +02:00
( setq org-outline-path-complete-in-steps nil )
( setq org-refile-use-outline-path t )
2023-04-15 17:25:11 +02:00
2023-09-21 02:46:05 +02:00
( setq org-contacts-files ' ( " ~/enc/org/people.org " ) )
2023-04-15 17:25:11 +02:00
( setq org-roam-v2-ack t )
( setq org-roam-completion-everywhere t )
( setq org-roam-directory
( file-truename " ~/enc/org/roam " ) )
( org-roam-db-autosync-mode )
2023-08-12 16:45:26 +02:00
( org-roam-db-autosync-enable )
2023-04-15 17:25:11 +02:00
( setq org-roam-capture-templates
2023-08-12 22:48:12 +02:00
' ( ( " n " " default " plain
" %? "
2023-09-21 02:46:05 +02:00
:if-new ( file+head " ${slug}.org " " #+title: ${title} \n #+category: ${title} \n #+filetags: \n " )
:empty-lines 1
2023-08-12 22:48:12 +02:00
:unnarrowed t )
( " j " " journal " plain
2023-04-15 17:25:11 +02:00
" %? "
2023-09-21 02:46:05 +02:00
:if-new ( file+head " journal/journal-${slug}.org " " #+title: ${title} \n #+category: 📔${title} \n #+filetags: 📔 \n " )
2023-08-14 15:56:03 +02:00
:empty-lines 1
2023-08-12 22:48:12 +02:00
:unnarrowed t )
( " t " " Therapy " plain
2023-09-21 02:46:05 +02:00
" #+title: ${title} \n "
:if-new ( file+head " therapy/therapy-${slug}.org " " #+title: ${title} \n #+category: 📗 ${title} \n #+filetags: 📗 \n " )
2023-08-14 15:56:03 +02:00
:empty-lines 1
:unnarrowed ) ) )
2023-08-12 22:48:12 +02:00
2024-06-06 01:26:00 +02:00
( define-prefix-command 'org-roam-map )
( global-set-key " \C -r " 'org-roam-map )
( define-key org-roam-map " o " 'org-roam-buffer-toggle )
( define-key org-roam-map " f " 'org-roam-node-find )
( define-key org-roam-map " i " 'org-roam-node-insert )
( define-key org-roam-map " n " 'org-roam-capture )
2023-08-12 16:45:26 +02:00
( global-set-key " \C -ca " 'org-agenda )
( define-prefix-command 'org-agenda-map )
( global-set-key " \C -a " 'org-agenda-map )
( define-key org-agenda-map " n " 'org-agenda-capture )
( define-key org-agenda-map " a " 'org-agenda )
2023-04-15 17:25:11 +02:00
2023-08-12 16:45:26 +02:00
( setq org-agenda-start-day nil
2024-06-06 01:26:00 +02:00
org-agenda-span 'day
org-agenda-dim-blocked-tasks t
2023-08-12 16:45:26 +02:00
org-agenda-sorting-strategy
2024-06-06 01:26:00 +02:00
' ( time-up priority-up category-keep )
org-deadline-warning-days 4
2023-08-12 16:45:26 +02:00
org-log-into-drawer t
2024-06-06 01:26:00 +02:00
org-treat-insert-todo-heading-as-state-change t
2023-08-12 16:45:26 +02:00
org-clock-into-drawer t
2023-09-21 02:46:05 +02:00
org-agenda-log-mode-items ' ( closed clock state )
2024-06-06 01:26:00 +02:00
org-agenda-prefix-format ' ( ( agenda . " %l %i %c %s %t " )
( todo . " %i %-12:c " )
( tags . " %i $-12:c " )
( search . " %i %-12:c " ) )
org-agenda-compact-blocks nil
org-agenda-use-tag-inheritance ( quote ( agenda ) ) ;; agenda performance
org-agenda-block-separator " --------- " )
2023-04-15 17:25:11 +02:00
2023-12-20 03:08:40 +01:00
( add-hook 'org-agenda-mode-hook ' ( lambda ( ) ( hl-line-mode 1 ) ) )
2023-08-22 13:06:03 +02:00
2023-09-21 02:46:05 +02:00
( setq org-agenda-skip-deadline-if-done t )
( setq org-agenda-skip-scheduled-if-done t )
( setq org-agenda-text-search-extra-files ( quote ( agenda-archives ) ) )
( setq org-agenda-log-mode-items ( quote ( state ) ) )
( setq org-agenda-search-headline-for-time nil )
2023-12-20 03:08:40 +01:00
( setq org-agenda-include-diary t )
2023-09-21 02:46:05 +02:00
2023-12-20 03:08:40 +01:00
( setq org-agenda-repeating-timestamp-show-all t )
2023-09-21 02:46:05 +02:00
2023-12-20 03:08:40 +01:00
( setq org-agenda-show-all-dates t )
2023-09-21 02:46:05 +02:00
2023-12-20 03:08:40 +01:00
( setq org-agenda-sorting-strategy
2024-06-06 01:26:00 +02:00
( quote ( ( agenda time-up user-defined-up priority-down category-keep )
2023-12-20 03:08:40 +01:00
( todo priority-down category-keep )
( tags priority-down category-keep )
( search category-keep ) ) ) )
2023-09-21 02:46:05 +02:00
( setq org-agenda-start-on-weekday nil )
2023-12-20 03:08:40 +01:00
( setq org-agenda-skip-timestamp-if-deadline-is-shown t )
2023-09-21 02:46:05 +02:00
( define-key org-agenda-mode-map ( kbd " C-p " ) 'my-scroll-down-half )
( define-key org-agenda-mode-map ( kbd " C-n " ) 'my-scroll-up-half )
2023-12-20 03:08:40 +01:00
( setq org-agenda-format-date ( lambda ( date ) ( concat " \n "
( make-string ( window-width ) 9472 )
" \n "
( org-agenda-format-date-aligned date ) ) ) )
2023-09-21 02:46:05 +02:00
( setq org-export-with-broken-links t )
( defun my-org-copy-region-as-markdown ( )
" Copy the region (in Org) to the system clipboard as Markdown. "
( interactive )
( if ( use-region-p )
( let* ( ( region
( buffer-substring-no-properties
( region-beginning )
( region-end ) ) )
( markdown
( org-export-string-as region 'md t ' ( :with-toc nil ) ) ) )
( gui-set-selection 'CLIPBOARD markdown ) ) ) )
2023-08-22 13:06:03 +02:00
2024-06-06 01:26:00 +02:00
( add-to-list 'org-modules 'habit )
( setq org-habit-following-days 2
org-habit-preceding-days 7
org-habit-show-all-today nil
org-habit-show-habits-only-for-today t
org-habit-show-habits t )
( define-key org-mode-map ( kbd " C-c h " ) 'org-habit-stats-view-habit-at-point )
( define-key org-agenda-mode-map ( kbd " H " ) 'org-habit-stats-view-habit-at-point-agenda )
( add-hook 'org-after-todo-state-change-hook 'org-habit-stats-update-properties )
2023-08-12 16:45:26 +02:00
( setq doom-snippets-enable-short-helpers t )
2023-08-22 13:06:03 +02:00
( setq dired-open-extensions ' ( ( " gif " . " sxiv " )
( " jpg " . " sxiv " )
( " png " . " sxiv " )
( " mkv " . " mpv " )
( " mp4 " . " mpv " ) ) )
2023-09-21 02:46:05 +02:00
2023-12-20 03:08:40 +01:00
( mode-icons-mode )
( add-hook 'dired-mode-hook #' mode-icons--mode-disable ) ;; with mode-icons, visiting a dir with dired takes up *lots* of CPU for =mode-icons-reset= (performance-issue)
2023-09-21 02:46:05 +02:00
( add-to-list 'auto-mode-alist ' ( " \\ .[Cc][Ss][Vv] \\ ' " . csv-mode ) )
( autoload 'csv-mode " csv-mode "
" Major mode for editing comma-separated value files. " t )
;; To open files with .journal extension in hledger-mode
( add-to-list 'auto-mode-alist ' ( " \\ .journal \\ ' " . hledger-mode ) )
;; Provide the path to you journal file.
;; The default location is too opinionated.
( setq hledger-jfile " ~/enc/org/hledger/2023.journal " )
;;; Auto-completion for account names
;; For company-mode users,
( add-to-list 'company-backends 'hledger-company )
2024-06-06 01:26:00 +02:00
( use-package! gptel
:config
2024-07-29 12:31:22 +02:00
( setq! gptel-api-key " thisisanapikey " )
2024-06-06 01:26:00 +02:00
( setq! gptel-max-tokens 8192 )
2024-07-29 12:31:22 +02:00
( setq gptel-model " model "
2024-06-06 01:26:00 +02:00
gptel-backend ( gptel-make-openai " llama-cpp "
2024-07-29 12:31:22 +02:00
:key " thisisanapikey "
2024-06-06 01:26:00 +02:00
:stream t
:protocol " http "
2024-07-29 12:31:22 +02:00
:host " localhost:6666 "
2024-06-06 01:26:00 +02:00
:models ' ( " model " ) ) ) )
( gptel-make-openai " llama-cpp " ;Any name
2024-07-29 12:31:22 +02:00
:key " thisisanapikey "
2024-06-06 01:26:00 +02:00
:stream t ;Stream responses
:protocol " http "
2024-07-29 12:31:22 +02:00
:host " localhost:6666 " ;Llama.cpp server location
2024-06-06 01:26:00 +02:00
:models ' ( " model " ) ) ;Any names, doesn't matter for Llama
( setq gptel--debug t )
;; Set our nickname & real-name as constant variables
( setq
erc-nick " phil_bb " ; Our IRC nick
erc-user-full-name " Phil B. " ) ; Our /whois name
;; Define a function to connect to a server
( defun erc/libera ( )
( interactive )
( erc :server " irc.libera.chat "
:port " 6667 " ) )
2024-08-30 15:16:27 +02:00
( setq-default elfeed-search-filter " @1-week-ago +unread " )