init.el.org
My Emacs configuration
More about the Emacs initialization file
~/.emacs.d/init.el is generated from this org file with Org-babel
How to tangle: M-x org-babel-tangle or C-c C-v t
My Emacs repository: git.minded.net/anne/emacs
The source version of this file: git.minded.net/anne/emacs/src/branch/main/init.el.org
Or view this file on my blog: blog.minded.net/pages/emacs/init.el.org
About me
1
2
|
(setq user-full-name "Anne"
user-mail-address "anne@minded.net")
|
Use-package
https://github.com/jwiegley/use-package
1
2
3
4
5
6
7
8
|
(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
M-x reload-emacs-init
1
2
3
4
|
(defun reload-emacs-init ()
(interactive)
(load-file "~/.emacs.d/init.el")
(message "Configuarion reloaded!"))
|
Customizations file
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.
1
2
|
(setq custom-file "~/.emacs.d/custom.el")
(load custom-file 'noerror 'nomessage)
|
TRAMP
https://www.gnu.org/software/emacs/manual/html_node/tramp/Auto_002dsave-File-Lock-and-Backup.html
1
|
(setq tramp-allow-unsafe-temporary-files t)
|
zone-mode
1
|
(add-to-list 'auto-mode-alist '("/etc/bind/zones/" . zone-mode))
|
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.
1
|
(setq create-lockfiles nil)
|
Yes-or-no prompts
https://www.emacswiki.org/emacs/YesOrNoP
(defalias 'yes-or-no-p 'y-or-n-p)
Keeping buffers up-to-date
https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Revert.html
1
2
|
(global-auto-revert-mode 1)
(setq global-auto-revert-non-file-buffers t)
|
Disable startup screen
https://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html
1
|
(setq inhibit-startup-screen nil)
|
What to display
https://www.gnu.org/software/emacs/manual/html_node/emacs/Frames.html
I do like the menu bar after all.
1
2
3
|
(tool-bar-mode -1)
;;(menu-bar-mode -1)
(tooltip-mode -1)
|
Mode line column and line numbers
https://www.gnu.org/software/emacs/manual/html_node/efaq/Displaying-the-current-line-or-column.html
Theme
1
2
3
4
5
|
(use-package ef-themes
:ensure t
:demand t
:config
(ef-themes-select 'ef-dream))
|
1
2
3
4
5
|
(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
https://gitlab.com/jessieh/mood-line
A lightweight, drop-in replacement for the default Emacs mode line configuration.
1
2
3
4
5
|
(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
https://www.gnu.org/software/emacs/manual/html_node/emacs/Dialog-Boxes.html
1
|
(setq use-dialog-box nil)
|
Sentences
https://www.gnu.org/software/emacs/manual/html_node/efaq/Filling-paragraphs-with-a-single-space.html
1
|
(setq sentence-end-double-space nil)
|
Minibuffer
https://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer-Edit.html
1
2
|
(setq resize-mini-windows t)
(setq max-mini-window-height 0.5)
|
Word wrap
https://www.gnu.org/software/emacs/manual/html_node/emacs/Visual-Line-Mode.html
1
|
(add-hook 'text-mode-hook 'visual-line-mode)
|
Mouse support
https://www.gnu.org/software/emacs/manual/html_node/emacs/Mouse-Input.html
1
2
3
|
(xterm-mouse-mode 1)
(mouse-wheel-mode 1)
(context-menu-mode 1)
|
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.
1
|
(setq kill-whole-line t)
|
Indentation
https://www.gnu.org/software/emacs/manual/html_node/eintr/Indent-Tabs-Mode.html
1
|
(setq-default indent-tabs-mode nil)
|
Electric pair mode
https://emacsdocs.org/docs/emacs/Matching
Overwrite highlighted region
https://www.gnu.org/software/emacs/manual/html_node/efaq/Replacing-highlighted-text.html
1
|
(delete-selection-mode t)
|
https://www.gnu.org/software/emacs/manual/html_node/emacs/Scrolling.html
1
|
(setq scroll-error-top-bottom t)
|
Cursor
https://www.gnu.org/software/emacs/manual/html_node/emacs/Cursor-Display.html
1
|
(global-hl-line-mode t)
|
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.
The Windmove package defines commands for moving directionally between neighboring windows in a frame.
1
2
3
4
5
6
|
(use-package windmove
:bind
(("<f2> <right>" . windmove-right)
("<f2> <left>" . windmove-left)
("<f2> <up>" . windmove-up)
("<f2> <down>" . windmove-down)))
|
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.
1
2
3
4
5
6
7
8
9
10
11
|
(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
https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html
1
2
|
(put 'dired-find-alternate-file 'disabled nil)
(setq dired-listing-switches "-agho --group-directories-first")
|
Kill buffer
1
|
(global-set-key (kbd "C-x k") 'kill-current-buffer)
|
Unset C-z
Unset C-z which is bound to `suspend-frame’ by default.
1
|
(global-unset-key (kbd "C-z"))
|
Backups
https://www.gnu.org/software/emacs/manual/html_node/emacs/Backup.html
Automatically backup buffers/files into the ~.emacs.d/backup/ directory.
1
2
3
4
5
6
|
(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
https://github.com/lewang/backup-walker
1
2
3
|
(use-package backup-walker
:bind
("C-c b" . backup-walker-start))
|
Auto save
https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Save-Control.html
1
2
|
(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
1
2
3
4
5
6
|
(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
https://magit.vc/
https://systemcrafters.net/mastering-git-with-magit/introduction/
1
2
|
(use-package magit
:ensure t)
|
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.
1
2
3
4
5
6
|
(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
https://emacs-helm.github.io/helm/
Imagine a life without Helm…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
(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)
("<tab>" . helm-execute-persistent-action)))
|
Org-appear
https://github.com/awth13/org-appear
Make invisible parts of Org elements appear visible.
1
2
3
4
5
|
(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.
1
|
(setq org-hide-emphasis-markers t)
|
Org-roam
https://github.com/org-roam/org-roam
https://www.orgroam.com/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
(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)))
|