From 3b9f0c91b9c7cb0e93fb11d58d4a2ae04e01fafc Mon Sep 17 00:00:00 2001 From: Anne Date: Fri, 31 Oct 2025 23:39:50 +0100 Subject: [PATCH] Added page Emacs --- content/pages/emacs/init.el.org.md | 515 +++++++++++++++++++++++++++++ 1 file changed, 515 insertions(+) create mode 100644 content/pages/emacs/init.el.org.md diff --git a/content/pages/emacs/init.el.org.md b/content/pages/emacs/init.el.org.md new file mode 100644 index 0000000..7bfbe07 --- /dev/null +++ b/content/pages/emacs/init.el.org.md @@ -0,0 +1,515 @@ ++++ +title = "init.el.org" +author = ["Anne"] +date = 2025-10-31T00:00:00+01:00 +lastmod = 2025-10-31T23:38:58+01:00 +tags = ["emacs"] +draft = false ++++ + +## My Emacs configuration {#my-emacs-configuration} + +More about [the Emacs initialization file](https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html) + +`~/.emacs.d/init.el` is generated from this org file with [Org-babel](https://orgmode.org/worg/org-contrib/babel/) + +How to tangle: `M-x org-babel-tangle` or `C-c C-v t` + +My Emacs repository: [git.minded.net/anne/emacs](https://git.minded.net/anne/emacs) + +The source version of this file: [git.minded.net/anne/emacs/src/branch/main/init.el.org](https://git.minded.net/anne/emacs/src/branch/main/init.el.org?display=source) + +Or view this file on my blog: [blog.minded.net/emacs/init.el.org](https://blog.minded.net/emacs) + + +### About me {#about-me} + +```elisp +(setq user-full-name "Anne" + user-mail-address "anne@minded.net") +``` + + +### Use-package {#use-package} + + + +```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)) +(require 'use-package) +(setq use-package-always-ensure 't) +``` + + +### Reload configuration {#reload-configuration} + +`M-x reload-emacs-init` + +```elisp +(defun reload-emacs-init () + (interactive) + (load-file "~/.emacs.d/init.el") + (message "Configuarion reloaded!")) +``` + + +### Customizations file {#customizations-file} + + + +You can choose to save customizations somewhere other than your initialization file. + +```elisp +(setq custom-file "~/.emacs.d/custom.el") +(load custom-file 'noerror 'nomessage) +``` + + +### TRAMP {#tramp} + + + +```elisp +(setq tramp-allow-unsafe-temporary-files t) +``` + + +### zone-mode {#zone-mode} + +```elisp +(add-to-list 'auto-mode-alist '("/etc/bind/zones/" . zone-mode)) +``` + + +### Lock files {#lock-files} + + + +If create-lockfiles is nil, Emacs does not lock files. + +```elisp +(setq create-lockfiles nil) +``` + + +### Yes-or-no prompts {#yes-or-no-prompts} + + + +```elispx1 +(defalias 'yes-or-no-p 'y-or-n-p) +``` + + +### Keeping buffers up-to-date {#keeping-buffers-up-to-date} + + + +```elisp +(global-auto-revert-mode 1) +(setq global-auto-revert-non-file-buffers t) +``` + + +### Disable startup screen {#disable-startup-screen} + + + +```elisp +(setq inhibit-startup-screen nil) +``` + + +### What to display {#what-to-display} + + + +I do like the menu bar after all. + +```elisp +(tool-bar-mode -1) +;;(menu-bar-mode -1) +(tooltip-mode -1) +``` + + +### Mode line column and line numbers {#mode-line-column-and-line-numbers} + + + +```elisp +(column-number-mode t) +``` + + +### Theme {#theme} + +```elisp +(use-package ef-themes + :ensure t + :demand t + :config + (ef-themes-select 'ef-dream)) +``` + +```elisp +(custom-set-faces + '(helm-buffer-directory ((t (:extend t :background "dim gray" :foreground "DarkRed")))) + '(helm-ff-directory ((t (:extend t :background "dim gray" :foreground "DarkRed")))) + '(org-agenda-date-today ((t (:inherit org-agenda-date :underline nil)))) + '(menu ((t (:background "magenta"))))) +``` + + +### Mood-line {#mood-line} + + + +A lightweight, drop-in replacement for the default Emacs mode line configuration. + +```elisp +(use-package mood-line + :config (mood-line-mode) +;;(setq mood-line-format mood-line-format-default) +(setq mood-line-format mood-line-format-default-extended) +(setq mood-line-glyph-alist mood-line-glyphs-unicode)) +``` + + +### Suppress dialog boxes {#suppress-dialog-boxes} + + + +```elisp +(setq use-dialog-box nil) +``` + + +### Sentences {#sentences} + + + +```elisp +(setq sentence-end-double-space nil) +``` + + +### Minibuffer {#minibuffer} + + + +```elisp +(setq resize-mini-windows t) +(setq max-mini-window-height 0.5) +``` + + +### Word wrap {#word-wrap} + + + +```elisp +(add-hook 'text-mode-hook 'visual-line-mode) +``` + + +### Mouse support {#mouse-support} + + + +```elisp +(xterm-mouse-mode 1) +(mouse-wheel-mode 1) +(context-menu-mode 1) +``` + + +### Kill-line {#kill-line} + + + +If non-nil, `kill-line` with no arg at start of line kills the whole line. + +```elisp +(setq kill-whole-line t) +``` + + +### Indentation {#indentation} + + + +```elisp +(setq-default indent-tabs-mode nil) +``` + + +### Electric pair mode {#electric-pair-mode} + + + +```elisp +(electric-pair-mode 1) +``` + + +### Overwrite highlighted region {#overwrite-highlighted-region} + + + +```elisp +(delete-selection-mode t) +``` + + +### Scrolling {#scrolling} + + + +```elisp +(setq scroll-error-top-bottom t) +``` + + +### Cursor {#cursor} + + + +```elisp +(global-hl-line-mode t) +``` + + +### Window handling {#window-handling} + + + +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. + +```elisp +(winner-mode 1) +``` + +The Windmove package defines commands for moving directionally between neighboring windows in a frame. + +```elisp +(use-package windmove + :bind + ((" " . windmove-right) + (" " . windmove-left) + (" " . windmove-up) + (" " . windmove-down))) +``` + + +### Crux {#crux} + + + +A Collection of Ridiculously Useful eXtensions for Emacs. crux bundles many useful interactive commands to enhance your overall Emacs experience. + +```elisp +(use-package crux + :bind + ("C-a" . crux-move-beginning-of-line) + ("C-c o" . crux-open-with) + ("C-k" . crux-kill-whole-line) + ("C-c f" . crux-cleanup-buffer-or-region) + ("C-x C-a" . crux-sudo-edit) + :config + (crux-with-region-or-buffer indent-region) + (crux-with-region-or-buffer untabify) + (crux-with-region-or-line comment-or-uncomment-region)) +``` + + +### Dired {#dired} + + + +```elisp +(put 'dired-find-alternate-file 'disabled nil) +(setq dired-listing-switches "-agho --group-directories-first") +``` + + +### Kill buffer {#kill-buffer} + +```elisp +(global-set-key (kbd "C-x k") 'kill-current-buffer) +``` + + +### Unset C-z {#unset-c-z} + +Unset C-z which is bound to \`suspend-frame' by default. + +```elisp +(global-unset-key (kbd "C-z")) +``` + + +### Backups {#backups} + + + +Automatically backup buffers/files into the ~.emacs.d/backup/ directory. + +```elisp +(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 +``` + + +### backup-walker {#backup-walker} + + + +```elisp +(use-package backup-walker + :bind + ("C-c b" . backup-walker-start)) +``` + + +### Auto save {#auto-save} + + + +```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) +``` + + +### Lastmod time stamp {#lastmod-time-stamp} + +```elisp +(setq time-stamp-start "\\(^:last_modified: \\\\?[\[<]+\\|^:LASTMOD: \\\\?[\[<]+\\|^#\\+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) +``` + + +### Magit {#magit} + + + + + +```elisp +(use-package magit + :ensure t) +``` + + +### Which-key {#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. + +```elisp +(use-package which-key + :config + (which-key-mode) + (setq which-key-idle-delay 0.5 + which-key-idle-secondary-delay 0.5) + (which-key-setup-side-window-bottom)) +``` + + +### Helm {#helm} + + + +Imagine a life without Helm... + +```elisp +(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 + ("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 g" . helm-do-grep-ag) + :map helm-map + ("C-z" . helm-select-action) + ("" . helm-execute-persistent-action))) +``` + + +### Org-appear {#org-appear} + + + +Make invisible parts of Org elements appear visible. + +```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)) +``` + +Hide emphasis markers by default. + +```elisp +(setq org-hide-emphasis-markers t) +``` + + +### Org-roam {#org-roam} + + + + + +```elisp +(use-package org-roam + :ensure t + ;;:init + ;;(setq org-roam-v2-ack t) + :custom + (org-roam-directory "~/org/notes") + (org-roam-completion-everywhere t) + (org-roam-capture-templates + '(("d" "default" plain "%?" + :target (file+head "%<%Y%m%d>-${slug}.org" + ":PROPERTIES:\n:CREATED: %U\n:LASTMOD: []\n:END:\n#+title: ${title}\n\n\n") + :unnarrowed t))) + :config + (org-roam-db-autosync-mode) + (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:42}" 'face 'org-tag))) + :bind (("C-c n l" . org-roam-buffer-toggle) + ("C-c n f" . org-roam-node-find) + ("C-c n i" . org-roam-node-insert) + ("C-c n c" . org-roam-capture) + ("C-c n d" . org-id-get-create) + ("C-c n t" . org-roam-tag-add) + ("C-c n u" . org-roam-tag-remove) + ("C-c n a" . org-roam-alias-add) + ("C-c n b" . org-roam-alias-remove))) +```