(setq user-full-name "Phil Bajsicki") ;; must be set before `org` is loaded (setq org-directory "~/enc/org/") (setq org-agenda-files (directory-files-recursively "~/enc/org/" ".org$")) (setq global-auto-revert-mode t) (setq auth-sources '("~/.authinfo")) (setq-default backup-inhibited t) (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) (setq-default indent-tabs-mode t) (setq langtool-java-bin "/usr/bin/java") (after! counsel (setq counsel-outline-display-style 'title)) (load-theme 'doom-one t) (doom-themes-neotree-config) (doom-themes-org-config) (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") (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)) (setq display-line-numbers-type 'relative) (setq next-screen-context-lines 4) (setq-default global-visual-line-mode t) (setq x-stretch-cursor t) (setq column-number-mode t) (setq-default calendar-week-start-day 1) (global-set-key "\C-g" 'keyboard-quit) (global-set-key "\C-cu" 'browse-url-chrome) (setq straight-repository-branch "develop") (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)))) (setq org-num-mode t) (setq org-todo-repeat-to-state "LOOP") (setq org-remove-highlights-with-change nil) (setq org-read-date-prefer-future t) (setq org-special-ctrl-a/e t) (setq org-special-ctrl-k t) (setq org-yank-adjusted-subtrees t) (setq org-M-RET-may-split-line (quote (default . t))) (setq org-log-done (quote time)) (setq org-log-into-drawer t) (setq org-catch-invisible-edits "smart") (setq org-use-property-inheritance nil) (setq org-duration-format 'h:mm) (setq org-hierarchical-todo-statistics t) (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) (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 (modify-all-frames-parameters '((right-divider-width . 0) (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 org-special-ctrl-a/e t 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 "◀── now ─────────────────────────────────────────────────") ;; Ellipsis styling ;; (setq org-ellipsis "…") ;; (set-face-attribute 'org-ellipsis nil :inherit 'default :box nil) (global-org-modern-mode) (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: \nFFilename: ") (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: \nFFilename: ") (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: \nDTarget 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))) (setq-default org-enforce-todo-dependencies t) (setq org-enforce-todo-checkbox-dependencies t) (require 'org-auto-tangle) (add-hook 'org-mode-hook 'org-auto-tangle-mode) (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))) (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))))))) (global-set-key "\C-cl" 'org-store-link) (global-set-key "\C-ch" 'counsel-org-link) (global-set-key "\C-cne" 'elgantt-open) (global-set-key "\C-cnn" 'org-capture) (global-set-key "\C-cia" '(lambda ()(interactive) (org-time-stamp '(16)))) (global-set-key "\C-cii" '(lambda () (interactive) (org-time-stamp-inactive '(16)))) (add-hook 'org-insert-heading-hook (lambda () (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) ))) (setq org-todo-keywords '((sequence "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 "|" "DONE(d!@)" ; Task successfully completed "KILL(k!@)") ; Task was cancelled, aborted or is no longer applicable (sequence "DECIDE()" ; for making decisions "|" "OKAY(o!)" ; okay as-is "YES(y!)" ; take action "NO(n!)")) ; don't take action 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))) (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") "* %(org-contacts-template-name) :PROPERTIES: :EMAIL: %(org-contacts-template-email) :PHONE: :ALIAS: :NICKNAME: :IGNORE: :ICON: :NOTE: :ADDRESS: :BIRTHDAY: :END:"))) (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) (use-package! org-transclusion :after org :init (map! :map global-map "" #'org-transclusion-add :leader :prefix "n" :desc "Org Transclusion Mode" "t" #'org-transclusion-mode)) (add-hook 'org-babel-after-execute-hook 'org-display-inline-images) (with-eval-after-load 'ox-latex (add-to-list 'org-latex-classes '("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" "\\documentclass{memoir}" ("\\chapter{%s}" . "\\chapter*{%s}") ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}")))) (defun org-super-links-quick-related () (interactive) (let ((org-super-links-link-prefix "\nrelated: ")) (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) (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 ) (setq org-refile-targets '((nil :maxlevel . 9) (org-agenda-files :maxlevel . 9))) (setq org-outline-path-complete-in-steps nil) (setq org-refile-use-outline-path t) (setq org-contacts-files '("~/enc/org/people.org")) (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) (org-roam-db-autosync-enable) (setq org-roam-capture-templates '(("n" "default" plain "%?" :if-new (file+head "${slug}.org" "#+title: ${title}\n#+category: ${title}\n#+filetags: \n") :empty-lines 1 :unnarrowed t) ("j" "journal" plain "%?" :if-new (file+head "journal/journal-${slug}.org" "#+title: ${title}\n#+category: 📔${title}\n#+filetags: 📔\n") :empty-lines 1 :unnarrowed t) ("t" "Therapy" plain "#+title: ${title}\n" :if-new (file+head "therapy/therapy-${slug}.org" "#+title: ${title}\n#+category: 📗 ${title}\n#+filetags: 📗\n") :empty-lines 1 :unnarrowed))) (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) (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) (setq org-agenda-start-day nil org-agenda-span 'day org-agenda-dim-blocked-tasks t org-agenda-sorting-strategy '(time-up priority-up category-keep) org-deadline-warning-days 4 org-log-into-drawer t org-treat-insert-todo-heading-as-state-change t org-clock-into-drawer t org-agenda-log-mode-items '(closed clock state) 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 "---------") (add-hook 'org-agenda-mode-hook '(lambda () (hl-line-mode 1))) (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) (setq org-agenda-include-diary t) (setq org-agenda-repeating-timestamp-show-all t) (setq org-agenda-show-all-dates t) (setq org-agenda-sorting-strategy (quote ((agenda time-up user-defined-up priority-down category-keep) (todo priority-down category-keep) (tags priority-down category-keep) (search category-keep)))) (setq org-agenda-start-on-weekday nil) (setq org-agenda-skip-timestamp-if-deadline-is-shown t) (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) (setq org-agenda-format-date (lambda (date) (concat "\n" (make-string (window-width) 9472) "\n" (org-agenda-format-date-aligned date)))) (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)))) (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) (setq doom-snippets-enable-short-helpers t) (setq dired-open-extensions '(("gif" . "sxiv") ("jpg" . "sxiv") ("png" . "sxiv") ("mkv" . "mpv") ("mp4" . "mpv"))) (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) (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) (use-package! gptel :config (setq! gptel-api-key "your key") (setq! gptel-max-tokens 8192) (setq gptel-model "model" gptel-backend (gptel-make-openai "llama-cpp" :stream t :protocol "http" :host "localhost:5000" :models '("model")))) (gptel-make-openai "llama-cpp" ;Any name :stream t ;Stream responses :protocol "http" :host "localhost:5000" ;Llama.cpp server location :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"))