1
0

Updated init.el.org

This commit is contained in:
2025-03-18 15:18:46 +01:00
parent 74c6988df1
commit 2986e0145e

View File

@@ -1,17 +1,27 @@
#+title: init.el.org
#+lastmod: [2025-03-16 Sun 22:29]
#+date: [2025-03-18 Tue]
#+lastmod: [2025-03-18 Tue 14:57]
#+draft: false
#+tags: emacs
How to tangle: ~M-x org-babel-tangle [C-c C-v t]~
See also: https://orgmode.org/manual/Extracting-Source-Code.html
* init.el
* My Emacs configuration
:PROPERTIES:
:header-args: :tangle ~/.emacs.d/init.el
:END:
More about [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html][the Emacs initialization file]]
~~/.emacs.d/init.el~ is generated from this org file with [[https://orgmode.org/worg/org-contrib/babel/][Org-babel]]
How to tangle: ~M-x org-babel-tangle~ or ~C-c C-v t~
My Emacs repository: [[https://git.minded.net/anne/emacs][git.minded.net/anne/emacs]]
The source version of this file: [[https://git.minded.net/anne/emacs/src/branch/main/init.el.org?display=source][git.minded.net/anne/emacs/src/branch/main/init.el.org]]
Or view this file on my blog: [[https://blog.minded.net/emacs][blog.minded.net/emacs/init.el.org]]
** About me
https://www.gnu.org/software/emacs/manual/html_node/elisp/User-Identification.html
#+begin_src elisp
(setq user-full-name "Anne"
@@ -19,12 +29,14 @@ https://www.gnu.org/software/emacs/manual/html_node/elisp/User-Identification.ht
#+end_src
** Use-package
https://github.com/jwiegley/use-package
[[https://github.com/jwiegley/use-package]]
#+begin_src elisp
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
@@ -34,15 +46,18 @@ https://github.com/jwiegley/use-package
** Reload configuration
~M-x reload-emacs-init~
#+begin_src elisp
(defun reload-emacs-configuration ()
(defun reload-emacs-init ()
(interactive)
(load-file "~/.emacs.d/init.el")
(message "Configuarion reloaded!"))
#+end_src
** Customizations file
https://www.gnu.org/software/emacs/manual/html_node/emacs/Saving-Customizations.html
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Saving-Customizations.html]]
You can choose to save customizations somewhere other than your initialization file.
@@ -51,8 +66,9 @@ You can choose to save customizations somewhere other than your initialization f
(load custom-file 'noerror 'nomessage)
#+end_src
** DISABLED Lock files
https://www.gnu.org/software/emacs/manual/html_node/elisp/File-Locks.html
** Lock files
[[https://www.gnu.org/software/emacs/manual/html_node/elisp/File-Locks.html]]
If create-lockfiles is nil, Emacs does not lock files.
@@ -60,153 +76,262 @@ If create-lockfiles is nil, Emacs does not lock files.
(setq create-lockfiles nil)
#+end_src
** DISABLED Disable startup screen
https://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html
#+begin_src elisp :tangle no
(setq inhibit-startup-screen t)
#+end_src
** Diminish
https://github.com/myrjola/diminish.el
Diminish implements hiding or abbreviation of the mode line displays (lighters) of minor-modes.
#+begin_src elisp
(use-package diminish
:ensure t)
#+end_src
** Yes-or-no prompts
https://www.emacswiki.org/emacs/YesOrNoP
[[https://www.emacswiki.org/emacs/YesOrNoP]]
#+begin_src elispx1
(defalias 'yes-or-no-p 'y-or-n-p)
#+end_src
** Column and line numbers
https://www.gnu.org/software/emacs/manual/html_node/efaq/Displaying-the-current-line-or-column.html
#+begin_src elisp
(column-number-mode t)
#+end_src
** Suppress dialog boxes
https://www.gnu.org/software/emacs/manual/html_node/emacs/Dialog-Boxes.html
#+begin_src elisp
(setq use-dialog-box nil)
#+end_src
** Keeping buffers up-to-date
https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Revert.html
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Revert.html]]
#+begin_src elisp
(global-auto-revert-mode 1)
(setq global-auto-revert-non-file-buffers t)
#+end_src
** Enable mouse support
https://emacsdocs.org/docs/emacs/Mouse-Commands#c-m-mouse-1
https://emacsdocs.org/docs/emacs/Text_002dOnly-Mouse
** Looks
*** Initial frame configuration
[[https://www.gnu.org/software/emacs/manual/html_node/elisp/Initial-Parameters.html]]
A bigger frame for the gui of Emacs.
#+begin_src elisp
(xterm-mouse-mode 1)
(mouse-wheel-mode 1)
(add-to-list 'default-frame-alist '(height . 56))
(add-to-list 'default-frame-alist '(width . 132))
#+end_src
** Sentences
https://www.gnu.org/software/emacs/manual/html_node/efaq/Filling-paragraphs-with-a-single-space.html
*** Frame font
[[https://www.gnu.org/software/emacs/manual/html_node/elisp/Frame-Font.html]]
#+begin_src elisp
(ignore-errors (set-frame-font "Roboto Mono-10"))
#+end_src
*** Disable startup screen
[[https://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html]]
#+begin_src elisp
(setq inhibit-startup-screen nil)
#+end_src
*** What to display
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Frames.html]]
I do like the menu bar after all.
#+begin_src elisp
(tool-bar-mode -1)
;;(menu-bar-mode -1)
(scroll-bar-mode -1)
(tooltip-mode -1)
#+end_src
*** Column and line numbers
[[https://www.gnu.org/software/emacs/manual/html_node/efaq/Displaying-the-current-line-or-column.html]]
#+begin_src elisp
(column-number-mode t)
#+end_src
*** Mood-line
[[https://gitlab.com/jessieh/mood-line]]
A lightweight, drop-in replacement for the default Emacs mode line configuration.
#+begin_src elisp
(use-package mood-line
:config (mood-line-mode))
(setq mood-line-format mood-line-format-default)
#+end_src
*** DISABLED Diminish
[[https://github.com/myrjola/diminish.el]]
Diminish implements hiding or abbreviation of the mode line displays (lighters) of minor-modes.
With Mood-line there's no need to diminish
#+begin_src elisp :tangle no
(use-package diminish
:ensure t)
#+end_src
*** Suppress dialog boxes
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Dialog-Boxes.html]]
#+begin_src elisp
(setq use-dialog-box nil)
#+end_src
*** Sentences
[[https://www.gnu.org/software/emacs/manual/html_node/efaq/Filling-paragraphs-with-a-single-space.html]]
#+begin_src elisp
(setq sentence-end-double-space nil)
#+end_src
** Kill-line
https://www.gnu.org/software/emacs/manual/html_node/emacs/Killing-by-Lines.html
*** DISABLED Rainbow delimiters
If non-nil, 'kill-line' with no arg at start of line kills the whole line.
[[https://github.com/Fanael/rainbow-delimiters]]
#+begin_src elisp
(setq kill-whole-line t)
#+end_src
** Indentation
https://www.gnu.org/software/emacs/manual/html_node/eintr/Indent-Tabs-Mode.html
#+begin_src elisp
(setq-default indent-tabs-mode nil)
#+end_src
** Rainbow delimiters
https://github.com/Fanael/rainbow-delimiters
#+begin_src elisp
#+begin_src elisp :tangle no
(use-package rainbow-delimiters
:init)
:init
(add-hook 'text-mode-hook #'rainbow-delimiters-mode)
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
#+end_src
** Electric pair mode
https://emacsdocs.org/docs/emacs/Matching
*** Doom themes
[[https://github.com/doomemacs/themes]]
#+begin_src elisp
(electric-pair-mode 1)
(use-package doom-themes
:ensure t
:config
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t ; if nil, italics is universally disabled
doom-themes-padded-modeline t)
(load-theme 'doom-vibrant t)
;;(setq doom-horizon-brighter-comments nil)
(setq doom-themes-treemacs-theme "doom-colors") ; use "doom-colors" for less minimal icon theme
(doom-themes-treemacs-config)
(doom-themes-org-config) ; corrects (and improves) org-mode's native fontification
(custom-set-faces
'(font-lock-comment-face ((t (:foreground "#6c6f93" :slant normal))))
'(org-hide ((t (:foreground "grey15"))))
'(org-scheduled-today ((t (:foreground "violet"))))
'(org-todo ((t (:foreground "magenta"))))
'(org-done ((t (:foreground "#9ca0a4" :bold nil :background "grey15"))))
'(org-tag ((t (:foreground "teal"))))
'(org-link ((t (:bold nil))))))
#+end_src
** Org-appear
https://github.com/awth13/org-appear
*** all-the-icons
[[https://github.com/domtronn/all-the-icons.el]]
#+begin_src elisp
(use-package org-appear
:load-path "~/.emacs.d/etc/elisp/org-appear"
:hook (org-mode . org-appear-mode))
(use-package all-the-icons
:if (display-graphic-p))
(use-package all-the-icons-dired
:after all-the-icons
:hook (dired-mode . all-the-icons-dired-mode))
#+end_src
#+begin_src elisp
(setq org-hide-emphasis-markers t)
#+end_src
*** Minibuffer
** Minibuffer
https://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer-Edit.html
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer-Edit.html]]
The variable ~resize-mini-windows~ controls the resizing of the minibuffer. If the value is t, the minibuffer window will also shrink automatically if you remove some lines of text from the minibuffer, down to a minimum of one screen line.
The variable ~max-mini-window-height~ controls the maximum height for resizing the minibuffer window. A floating-point number specifies a fraction of the frame's height; an integer specifies the maximum number of lines; nil means do not resize the minibuffer window automatically. The default value is 0.25.
The variable ~max-mini-window-height~ controls the maximum height for resizing the minibuffer window. A floating-point number specifies a fraction of the frames height; an integer specifies the maximum number of lines; nil means do not resize the minibuffer window automatically. The default value is 0.25.
#+begin_src elisp
(setq resize-mini-windows t)
(setq max-mini-window-height 0.5)
#+end_src
** Word wrap
https://www.gnu.org/software/emacs/manual/html_node/emacs/Visual-Line-Mode.html
*** Word wrap
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Visual-Line-Mode.html]]
#+begin_src elisp
(add-hook 'text-mode-hook 'visual-line-mode)
#+end_src
** Overwrite highlighted region
https://www.gnu.org/software/emacs/manual/html_node/efaq/Replacing-highlighted-text.html
** Editing and moving around
*** Mouse support
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Mouse-Input.html]]
#+begin_src elisp
(xterm-mouse-mode 1)
(mouse-wheel-mode 1)
(context-menu-mode 1)
#+end_src
*** xclip
[[https://elpa.gnu.org/packages/xclip.html]]
This package allows Emacs to copy to and paste from the GUI clipboard
when running in text terminal.
#+begin_src elisp
(use-package xclip
:init
(xclip-mode 1))
#+end_src
*** Kill-line
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Killing-by-Lines.html]]
If non-nil, ~kill-line~ with no arg at start of line kills the whole line.
#+begin_src elisp
(setq kill-whole-line t)
#+end_src
*** Indentation
[[https://www.gnu.org/software/emacs/manual/html_node/eintr/Indent-Tabs-Mode.html]]
#+begin_src elisp
(setq-default indent-tabs-mode nil)
#+end_src
*** Electric pair mode
[[https://emacsdocs.org/docs/emacs/Matching]]
#+begin_src elisp
(electric-pair-mode 1)
#+end_src
*** Overwrite highlighted region
[[https://www.gnu.org/software/emacs/manual/html_node/efaq/Replacing-highlighted-text.html]]
#+begin_src elisp
(delete-selection-mode t)
#+end_src
** Scrolling
https://www.gnu.org/software/emacs/manual/html_node/emacs/Scrolling.html
*** Scrolling
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Scrolling.html]]
#+begin_src elisp
(setq scroll-error-top-bottom t)
#+end_src
** Cursor
https://www.gnu.org/software/emacs/manual/html_node/emacs/Cursor-Display.html
*** Cursor
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Cursor-Display.html]]
#+begin_src elisp
(global-hl-line-mode t)
#+end_src
** Window handling
https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Convenience.html#index-winner_002dmode
*** Window handling
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Convenience.html]]
Winner mode is a global minor mode that records the changes in the window configuration (i.e., how the frames are partitioned into windows), so that you can undo them.
@@ -225,45 +350,9 @@ The Windmove package defines commands for moving directionally between neighbori
("<f2> <down>" . windmove-down)))
#+end_src
** Saving files
https://www.gnu.org/software/emacs/manual/html_node/emacs/Backup.html
Automatically backup buffers/files into the ~.emacs.d/backup/ directory.
#+begin_src elisp
(make-directory (expand-file-name "backups/" user-emacs-directory) t)
(setq backup-directory-alist `(("." . ,(expand-file-name "backups/" user-emacs-directory)))
backup-by-copying t ; Don't delink hardlinks
version-control t ; Use version numbers on backups
delete-old-versions t ; Automatically delete excess backups
kept-new-versions 20 ; how many of the newest versions to keep
kept-old-versions 5) ; and how many of the old
#+end_src
https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Save-Control.html
#+begin_src elisp
(setq auto-save-timeout 20 ; number of seconds idle time before auto-save (default: 30)
auto-save-interval 200) ; number of keystrokes between auto-saves (default: 300)
#+end_src
** Unset C-z
Unset C-z which is bound to `suspend-frame' by default.
#+begin_src elisp
(global-unset-key (kbd "C-z"))
#+end_src
** Dired
https://lucidmanager.org/productivity/manage-files-with-emacs/
#+begin_src elisp
(put 'dired-find-alternate-file 'disabled nil)
(setq dired-listing-switches "-agho --group-directories-first")
#+end_src
** Crux
https://github.com/bbatsov/crux
[[https://github.com/bbatsov/crux]]
A Collection of Ridiculously Useful eXtensions for Emacs. crux bundles many useful interactive commands to enhance your overall Emacs experience.
@@ -280,57 +369,127 @@ A Collection of Ridiculously Useful eXtensions for Emacs. crux bundles many usef
:hook (before-save-hook . crux-cleanup-buffer-or-region))
#+end_src
** Dired
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html]]
#+begin_src elisp
(put 'dired-find-alternate-file 'disabled nil)
(setq dired-listing-switches "-agho --group-directories-first")
#+end_src
** Kill buffer
#+begin_src elisp
(global-set-key (kbd "C-x k") 'kill-this-buffer)
#+end_src
** Doom-themes
[[https://github.com/doomemacs/themes]]
** Unset C-z
Unset C-z which is bound to `suspend-frame' by default.
#+begin_src elisp
(use-package doom-themes
:ensure t
:config
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t ; if nil, italics is universally disabled
doom-themes-padded-modeline t)
(load-theme 'doom-vibrant t)
(setq doom-themes-treemacs-theme "doom-colors") ; use "doom-colors" for less minimal icon theme
(doom-themes-treemacs-config)
(doom-themes-org-config) ; corrects (and improves) org-mode's native fontification
(custom-set-faces
'(font-lock-comment-face ((t (:foreground "#6c6f93" :slant normal))))
'(org-hide ((t (:foreground "grey15"))))
'(org-scheduled-today ((t (:foreground "violet"))))
'(org-todo ((t (:foreground "magenta"))))
'(org-done ((t (:foreground "#9ca0a4" :bold nil :background "grey15"))))
'(org-tag ((t (:foreground "teal"))))
'(org-link ((t (:bold nil))))))
(global-unset-key (kbd "C-z"))
#+end_src
** Mood-line
https://github.com/jessiehildebrandt/mood-line
** Saving files
mood-line is a minimal mode-line configuration that aims to replicate some of the features of the doom-modeline package.
*** Backups
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Backup.html]]
Automatically backup buffers/files into the ~.emacs.d/backup/ directory.
#+begin_src elisp
(use-package mood-line
:config (mood-line-mode))
(setq backup-directory-alist '(("." . "~/.emacs.d/backups")))
(setq backup-by-copying t ; Don't delink hardlinks
version-control t ; Use version numbers on backups
delete-old-versions t ; Automatically delete excess backups
kept-new-versions 20 ; how many of the newest versions to keep
kept-old-versions 5) ; and how many of the old
#+end_src
*** Auto save
[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Save-Control.html]]
#+begin_src elisp
(setq auto-save-timeout 20 ; number of seconds idle time before auto-save (default: 30)
auto-save-interval 200) ; number of keystrokes between auto-saves (default: 300)
#+end_src
*** Lastmod time stamp
#+begin_src elisp
(setq time-stamp-start "\\(^:last_modified: \\\\?[\[<]+\\|^#\\+lastmod: \\\\?[\[<]+\\|^;; lastmod: \\\\?[\[<]+\\)")
(setq time-stamp-end "\\\\?[\]>]")
(setq time-stamp-format "%Y-%02m-%02d %3a %02H:%02M")
(setq time-stamp-limit 12)
(add-hook 'before-save-hook 'time-stamp)
(setq time-stamp-active t)
#+end_src
** Magit
https://magit.vc/
https://systemcrafters.net/mastering-git-with-magit/introduction/
[[https://magit.vc/]]
[[https://systemcrafters.net/mastering-git-with-magit/introduction/]]
#+begin_src elisp
(use-package magit
:ensure t)
#+end_src
** Treemacs
[[https://github.com/Alexander-Miller/treemacs]]
A tree layout file explorer for Emacs.
#+begin_src elisp
(use-package treemacs
:ensure t
:defer t
:init
(with-eval-after-load 'winum
(define-key winum-keymap (kbd "M-0") #'treemacs-select-window))
:config
(setq treemacs-show-hidden-files nil)
:bind
(:map global-map
("M-0" . treemacs-select-window)
("C-x t 1" . treemacs-delete-other-windows)
("C-x t t" . treemacs)
("<f8>" . treemacs)
("C-x t d" . treemacs-select-directory)
("C-x t B" . treemacs-bookmark)
("C-x t C-t" . treemacs-find-file)
("C-x t M-t" . treemacs-find-tag)))
(use-package treemacs-icons-dired
:hook (dired-mode . treemacs-icons-dired-enable-once)
:ensure t)
(use-package nerd-icons
;; :custom
;; The Nerd Font you want to use in GUI
;; "Symbols Nerd Font Mono" is the default and is recommended
;; but you can use any other Nerd Font if you want
;; (nerd-icons-font-family "Symbols Nerd Font Mono")
)
(use-package treemacs-nerd-icons
:config
(treemacs-load-theme "nerd-icons"))
(use-package treemacs-magit
:after (treemacs magit)
:ensure t)
#+end_src
** Which-key
https://github.com/justbur/emacs-which-key
[[https://github.com/justbur/emacs-which-key]]
which-key is a minor mode for Emacs that displays the key bindings following your currently entered incomplete command (a prefix) in a popup.
@@ -344,6 +503,7 @@ which-key is a minor mode for Emacs that displays the key bindings following you
#+end_src
** Helm
[[https://emacs-helm.github.io/helm/]]
Helm is an Emacs framework for incremental completions and narrowing selections. It helps to rapidly complete file names, buffer names, or any other Emacs interactions requiring selecting an item from a list of possible choices.
@@ -352,27 +512,76 @@ Helm is an Emacs framework for incremental completions and narrowing selections.
(use-package helm
:ensure t
:config
;;(require 'helm-config)
:init
(helm-mode 1)
(setq helm-split-window-inside-p t)
:diminish helm-mode
:bind (("M-x" . helm-M-x) ;; Evaluate functions
("C-x C-f" . helm-find-files) ;; Open or create files
("C-x b" . helm-mini) ;; Select buffers
:bind (("M-x" . helm-M-x) ; Evaluate functions
("C-x C-f" . helm-find-files) ; Open or create files
("C-x b" . helm-mini) ; Select buffers
("C-x C-b" . helm-buffers-list)
("C-x C-r" . helm-recentf) ;; Select recently saved files
("C-c i" . helm-imenu) ;; Select document heading
("M-y" . helm-show-kill-ring) ;; Show the kill ring
("C-x C-r" . helm-recentf) ; Select recently saved files
("C-c i" . helm-imenu) ; Select document heading
("M-y" . helm-show-kill-ring) ; Show the kill ring
("C-x c g" . helm-do-grep-ag)
:map helm-map
("C-z" . helm-select-action)
("<tab>" . helm-execute-persistent-action)))
#+end_src
** Helm-org
** Org Mode
*** Org Mode
[[https://orgmode.org/org.html]]
#+begin_src elisp
(use-package org
:bind
(("C-c l" . org-store-link)
("C-c a" . org-agenda)
("C-c c" . org-capture))
:config
(setq org-directory "~/org"
org-default-notes-file "~/org/agenda/inbox.org"
org-attach-id-dir "~/org/data/")
;;(setq org-agenda-text-search-extra-files (directory-files-recursively "~/org/" "\\.org$"))
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
(setq org-startup-indented t
org-pretty-entities t
org-hide-emphasis-markers t
org-hide-leading-stars t
org-startup-with-inline-images t
org-image-actual-width '(300)
org-tags-column 0
org-log-done 'time
org-log-into-drawer t
org-deadline-warning-days 7
org-refile-targets '((org-agenda-files :maxlevel . 5))
org-refile-use-outline-path 'file
org-outline-path-complete-in-steps nil
org-refile-allow-creating-parent-nodes 'confirm)
;;(setq org-blank-before-new-entry (quote ((heading) (plain-list-item))))
(advice-add 'org-refile :after 'org-save-all-org-buffers)
(setq org-capture-templates
'(("t" "Task" entry (file "~/org/agenda/todo.org") "* TODO %?\n:PROPERTIES:\n:CREATED: %U\n:END:" :empty-lines 1)
("n" "Note" entry (file org-default-notes-file) "* %?\n:PROPERTIES:\n:CREATED: %U\n:END:" :empty-lines 1)
("j" "Journal entry" entry (file+olp+datetree "~/org/journal.org") "* %?" :unnarrowed t :empty-lines-after 1)
("J" "Journal entry on date" entry (file+olp+datetree "~/org/journal.org") "* %?" :time-prompt t :unnarrowed t :empty-lines-after 1)
("m" "Meeting" entry (file+olp+datetree "~/org/agenda/agenda.org") "* %?\n%T" :time-prompt t :tree-type month :empty-lines 1)
("a" "Agenda entry" entry (file+olp+datetree "~/org/agenda/agenda.org") "* %?\n%t" :time-prompt t :tree-type month :empty-lines 1)))
(setq org-todo-keywords
'((sequence "TODO(t)" "STARTED(s)" "WAITING" "SOMEDAY" "MAYBE" "|" "DONE(d)" "CANCELLED(c)")
(sequence "TOREAD(r)" "READING" "|" "READ")
(sequence "TOWATCH(w)" "WATCHING" "|" "WATCHED"))))
#+end_src
*** Helm-org
[[https://github.com/emacs-helm/helm-org]]
#+begin_src elisp :tangle no
#+begin_src elisp
(use-package helm-org
:after helm
:config
@@ -380,14 +589,124 @@ Helm is an Emacs framework for incremental completions and narrowing selections.
(add-to-list 'helm-completing-read-handlers-alist '(org-set-tags . helm-org-completing-read-tags)))
#+end_src
** Lastmod
Update time stamp on save.
*** org-super-agenda
[[https://github.com/alphapapa/org-super-agenda]]
#+begin_src elisp
(setq time-stamp-start "\\(^:last_modified: \\\\?[\[<]+\\|^#\\+lastmod: \\\\?[\[<]+\\|^;; lastmod: \\\\?[\[<]+\\)")
(setq time-stamp-end "\\\\?[\]>]")
(setq time-stamp-format "%Y-%02m-%02d %3a %02H:%02M")
(setq time-stamp-limit 12)
(add-hook 'before-save-hook 'time-stamp)
(setq time-stamp-active t)
(use-package org-super-agenda
:after org-agenda
:init
(setq org-agenda-files '("~/org" "~/org/agenda" "~/org/notes"))
;;(setq org-agenda-text-search-extra-files (directory-files-recursively "~/org/" "\\.org$"))
(setq calendar-week-start-day 1)
(calendar-set-date-style 'european)
(setq calendar-time-display-form
'(24-hours ":" minutes
(if time-zone " (") time-zone (if time-zone ")")))
(setq org-agenda-format-date (lambda (date) (concat "\n" (org-agenda-format-date-aligned date))))
(setq org-agenda-start-day nil)
(setq org-agenda-span 'day)
(setq use-agenda-use-time-grid nil)
(setq org-agenda-start-on-weekday nil)
(setq org-agenda-include-diary nil)
(setq org-agenda-tags-column 0)
(setq org-agenda-skip-scheduled-if-done t)
(setq org-agenda-skip-deadline-if-done t)
(setq org-agenda-include-deadlines t)
(setq org-agenda-block-separator nil)
(setq org-agenda-compact-blocks t)
(setq org-agenda-start-with-log-mode nil)
(setq org-agenda-sticky t)
(setq org-agenda-dim-blocked-tasks nil)
(setq org-agenda-custom-commands
'(("d" "Daily agenda"
((agenda "" ((org-super-agenda-groups
'((:discard (:todo "CANCELLED"))
(:discard (:file-path "someday"))
(:name none
:file-path "days"
:file-path "people"
:tag "day")
(:name "Scheduled"
:time-grid t)
(:auto-tags t
:order 5)
(:name "Today"
:and (:todo t :scheduled t)
:deadline t
:order 3)
))))))
("t" "Todo"
((agenda "" ((org-super-agenda-groups
'(
(:name none
:discard (:file-path "days")
:discard (:file-path "people")
:discard (:tag "day"))
(:auto-tags t
:order 5)
(:name "Today"
:and (:todo t :scheduled t :not (:todo "SOMEDAY"))
:deadline t
:order 3)
(:discard (:anything t))
))))
(alltodo "" ((org-agenda-overriding-header "\nUnscheduled")
(org-super-agenda-groups
'(
(:discard (:deadline t)
:discard (:scheduled t)
:discard (:todo "SOMEDAY")
:discard (:file-path "someday"))
(:auto-tags t
:order 0)
(:name "Tags: none"
:not (:scheduled t)
:and (:file-path "todo")
:order 9)
(:discard (:anything t))
))))))
("x" "Daily schedule"
((agenda "" ((org-super-agenda-groups
'(
(:name none
:file-path "days"
:file-path "people"
:tag "day")
(:name none
:time-grid nil)
(:name none
:discard (:todo t))
))))))))
:config
(org-super-agenda-mode t))
(defun pop-to-org-agenda (&optional split)
(interactive "P")
(org-agenda nil "d")
(delete-other-windows)
(treemacs)
(windmove-right))
(global-set-key (kbd "<f5>") 'pop-to-org-agenda)
#+end_src
*** Org-appear
[[https://github.com/awth13/org-appear]]
Make invisible parts of Org elements appear visible.
#+begin_src elisp
(use-package org-appear
:load-path "~/.emacs.d/etc/elisp/org-appear"
:hook (org-mode . org-appear-mode)
:init
(setq org-appear-autolinks t))
#+end_src
Hide emphasis markers by default.
#+begin_src elisp
(setq org-hide-emphasis-markers t)
#+end_src