From 6456632d185f8d11f531011f08cf2aeb5a13bd45 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Sat, 2 Nov 2019 16:41:17 +0100 Subject: [PATCH] Emacs: Clean up main settings. --- .emacs.d/lisp/main.el | 155 +++++++++++++++--------------------------- 1 file changed, 56 insertions(+), 99 deletions(-) diff --git a/.emacs.d/lisp/main.el b/.emacs.d/lisp/main.el index 286d8ea0..fb76e26a 100644 --- a/.emacs.d/lisp/main.el +++ b/.emacs.d/lisp/main.el @@ -12,8 +12,50 @@ ;;; Force on using the minibuffer instead. (setq use-dialog-box nil) -;;; Timeout before echoing the prefix of an unfinished keystroke. -(setq echo-keystrokes 0.5) +(setq + recentf-max-saved-items 100 + disabled-command-function nil ; Enable all disabled commands. + scroll-error-top-bottom t ; Alternative scrolling + kill-whole-line t ; Kill whole line including \n. + scroll-step 1 ; Line by line scrolling + calendar-week-start-day 1 + calendar-date-style 'iso + comint-prompt-read-only t + woman-fill-column fill-column + abbrev-file-name (expand-file-name "abbrev_defs" "~/personal") + frame-title-format (concat "%b" (unless (daemonp) " [serverless]")) + delete-by-moving-to-trash t + uniquify-buffer-name-style 'forward + vc-follow-symlinks t ; Disable prompt (but leave warning) on git symlink. + sort-fold-case t + +;;; Clipboard and primary selection. + select-enable-primary t + save-interprogram-paste-before-kill t + +;;; Save all visited URLs. + url-history-track t + url-history-file (expand-file-name "url/history" user-emacs-directory) + + ;; Timeout before echoing the prefix of an unfinished keystroke. + echo-keystrokes 0.5 + + ;; Disable autosave features. + auto-save-default nil + auto-save-list-file-prefix nil + + ;; Place backup files in specific directory. + backup-directory-alist + `(("." . ,(expand-file-name "backups" user-emacs-directory))) + + ;; Enforce horizontal splitting. 140 means that the window is large enough to + ;; hold 2 other windows of 70 columns. + split-height-threshold nil + split-width-threshold 140 + + ;; TODO: Ediff does not seem to auto-refine. Bug? Compare daemon and no-daemon. + ediff-window-setup-function 'ediff-setup-windows-plain + ediff-split-window-function 'split-window-horizontally) ;;; Remember last cursor position. (save-place-mode) @@ -21,35 +63,17 @@ ;;; allows to save places at a strategic moment. (add-hook 'before-save-hook 'save-place-kill-emacs-hook) -;;; Recent files. -(setq recentf-max-saved-items 100) +(savehist-mode) ; Save M-: history. -;;; Save M-: history. -(savehist-mode) - -;;; Disable autosave features. -(setq auto-save-default nil) -(setq auto-save-list-file-prefix nil) - -;;; Place backup files in specific directory. -(setq backup-directory-alist - `(("." . ,(expand-file-name "backups" user-emacs-directory)))) - -;;; Default mode -(setq-default major-mode 'text-mode) +(setq-default major-mode 'text-mode) ; Default mode. ;;; Disable suspend key since it is useless on Emacs server. (global-unset-key (kbd "C-z")) (global-unset-key (kbd "C-x C-z")) -;;; Make questions less annoying. -(defalias 'yes-or-no-p 'y-or-n-p) +(defalias 'yes-or-no-p 'y-or-n-p) ; Make questions less annoying. -;;; Enable all disabled commands. -(setq disabled-command-function nil) - -;;; Print buffer size in mode line. -(size-indication-mode 1) +(size-indication-mode 1) ; Print buffer size in mode line. ;;; Display defun in mode line. ;; (which-function-mode) @@ -78,20 +102,11 @@ (setq auto-revert-interval 1) (add-hook 'auto-revert-tail-mode-hook 'ambrevar/turn-on-absolute-line-number) -;;; Alternative scrolling -(setq scroll-error-top-bottom t) - -;;; Kill whole line including \n. -(setq kill-whole-line t) - ;;; Indentation (setq-default tab-width 2) (defvaralias 'standard-indent 'tab-width) (setq-default indent-tabs-mode t) -;;; Line by line scrolling -(setq scroll-step 1) - (setq whitespace-style '(face empty indentation space-after-tab space-before-tab tab-mark trailing)) @@ -116,12 +131,6 @@ (when (getenv "MANWIDTH") (setq-default fill-column (string-to-number (getenv "MANWIDTH")))) (add-hook 'text-mode-hook 'turn-on-auto-fill) -;; (setq sentence-end-double-space nil) - -;;; Enforce horizontal splitting. 140 means that the window is large enough to -;;; hold 2 other windows of 70 columns. -(setq split-height-threshold nil - split-width-threshold 140) ;;; Windmove mode ;;; By default, it allows easy window switching with Shift+arrows. I like to @@ -154,7 +163,6 @@ (executable-find browse-url-kde-program) (executable-find browse-url-conkeror-program) (executable-find browse-url-chrome-program))) -(setq shr-external-browser browse-url-browser-function) (setq browse-url-browser-function '(;; TODO: Display hyperspec in other window. ("http://www.lispworks.com/reference/HyperSpec/.*" . eww-browse-url) ("file:///.*HyperSpec.*" . eww-browse-url) @@ -164,7 +172,8 @@ (setq shr-width (string-to-number (or (getenv "MANWIDTH") "80")) ;; If you're using a dark theme, and the messages are hard to read, it ;; can help to change the luminosity, e.g.: - shr-color-visible-luminance-min 80) + shr-color-visible-luminance-min 80 + shr-external-browser browse-url-browser-function) ;;; Extend MIME-types support for videos. (with-eval-after-load 'mailcap @@ -191,22 +200,15 @@ (show-paren-mode 1) ;;; By default, there’s a small delay before showing a matching parenthesis. Set ;;; it to 0 to deactivate. -(setq show-paren-delay 0) -(setq show-paren-when-point-inside-paren t) +(setq show-paren-delay 0 + show-paren-when-point-inside-paren t) ;;; Electric Pairs to auto-complete () [] {} "" etc. It works on regions. ;; (electric-pair-mode) -;;; Spawn terminal shortcut: WM's binding is s+. -(global-set-key (kbd "C-x M-") 'spawn-terminal) - -;;; Calendar ISO display. -(setq calendar-week-start-day 1) -(setq calendar-date-style 'iso) - ;;; Compilation bindings and conveniences. -(setq compilation-ask-about-save nil) -(setq compilation-scroll-output 'first-error) +(setq compilation-ask-about-save nil + compilation-scroll-output 'first-error) (with-eval-after-load 'compile ;; Making `compilation-directory' local only works with `recompile' ;; and if `compile' is never used. In such a scenario, @@ -232,14 +234,6 @@ ;; Do not use `recompile' since we want to change the compilation folder for the current buffer. "" 'ambrevar/compile-last-command) -;;; REVIEW: Bug 26658 reports that cc-modes mistakenly does not make use of prog-mode-map. -;;; The following line is a suggested work-around. -;;; This should be fixed in Emacs 26. -(eval-after-load 'cc-mode '(set-keymap-parent c-mode-base-map prog-mode-map)) - -;;; Comint mode -(setq comint-prompt-read-only t) - ;;; Desktop-mode ;;; REVIEW: `desktop-kill' should not query the user in `kill-emacs-hook'. ;;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28943 @@ -255,7 +249,7 @@ (or (not (boundp 'desktop-save-mode)) (null desktop-save-mode))) (when (< emacs-major-version 27) - ;; By default, Emacs<27 prompts for unsafe variable when loading desktop + ;; TODO: By default, Emacs<27 prompts for unsafe variable when loading desktop ;; which stucks the daemon. Disable this behaviour. (defun ambrevar/enable-safe-local-variables () (setq enable-local-variables t)) @@ -312,9 +306,6 @@ ;; server-mode does not seem to have any post-start hook. (advice-add 'server-start :after #'ambrevar/desktop-setup) -;;; Buffer names. -(setq uniquify-buffer-name-style 'forward) - ;;; Skeleton settings (when (require 'patch-skeletons nil 'noerror) ;;; Do not expand abbrevs in skeletons. @@ -324,14 +315,6 @@ "C->" 'skeleton-next-position "C-<" 'skeleton-previous-position)) -;;; Disable prompt (but leave warning) on git symlink. -(setq vc-follow-symlinks t) - -;;; Clipboard and primary selection. -;; (setq select-enable-clipboard t) -(setq select-enable-primary t - save-interprogram-paste-before-kill t) - ;;; Move mouse away. (mouse-avoidance-mode 'banish) ;;; That binding is not very useful and gets in the way of C-. @@ -345,27 +328,12 @@ "C-" 'text-scale-increase) (setq text-scale-mode-step 1.1) -;;; Sort -(setq sort-fold-case t) - ;;; Replace not-so-useful comment-dwim binding. (global-set-key (kbd "M-;") 'comment-line) -;;; Eldoc: Disable if too distracting. -;; (global-eldoc-mode 0) -;; (setq eldoc-idle-delay 0.1) ; Could be even more distracting. - ;;; Replace `kill-buffer' binding by `kill-this-buffer'. (global-set-key (kbd "C-x k") 'kill-this-buffer) -;;; Ediff -;;; TODO: Ediff does not seem to auto-refine. Bug? Compare daemon and no-daemon. -(setq ediff-window-setup-function 'ediff-setup-windows-plain - ediff-split-window-function 'split-window-horizontally) - -;;; Trash -(setq delete-by-moving-to-trash t) - ;;; Display Time World (setq zoneinfo-style-world-list @@ -380,9 +348,6 @@ ("America/New_York" "New York") ("America/Los_Angeles" "Los Angeles"))) -;;; Frame title -(setq frame-title-format (concat "%b" (unless (daemonp) " [serverless]"))) - ;;; Initial scratch buffer message. (require 'functions) ; For `ambrevar/fortune-scratch-message'. (let ((fortune (ambrevar/fortune-scratch-message))) @@ -401,19 +366,11 @@ ;; edebug-test-coverage t ;; edebug-trace t) - ;;; Make windowing more reactive on. This is especially true with Helm on EXWM. +;; TODO: Test if still a problem with Emacs 27. (when (= emacs-major-version 26) (setq x-wait-for-event-timeout nil)) -(setq woman-fill-column fill-column) - -;;; Save all visited URLs. -(setq url-history-track t - url-history-file (expand-file-name "url/history" user-emacs-directory)) - -(setq abbrev-file-name (expand-file-name "abbrev_defs" "~/personal")) - (when (require 'so-long nil 'noerror) (global-so-long-mode 1))