;;; init-base.el --- base configuration -*- lexical-binding: t -*- ;; Author: Franck Cuny ;;; Commentary: ;; commentary ;;; Code: (setq backup-inhibited t) ;; no backups (setq create-lockfiles nil) ;; don't use a lock file (setq auto-save-default nil) ;; no auto save (setq confirm-kill-emacs #'yes-or-no-p) ;; ask before killing emacs (setq cursor-in-non-selected-windows nil) ;; keep cursors and highlights in current window only (setq delete-by-moving-to-trash t) ;; delete files by moving them to the trash (setq highlight-nonselected-windows nil) ;; don't highlight inactive windows (setq history-delete-duplicates t) ;; delete duplicate from history (setq initial-major-mode 'fundamental-mode) ;; default mode for the scratch buffer (setq initial-scratch-message "") ;; makes the scratch buffer empty (setq midnight-period (* 3600 6)) ;; clear buffer every 6 hours (setq mode-line-default-help-echo nil) ;; don't say anything on mode-line mouseover (setq require-final-newline t) ;; ensure a new line is present at the bottom of files (setq ring-bell-function 'ignore) ;; really no bell (setq sentence-end-double-space nil) ;; it matters for filling (setq use-short-answers t) ;; use y-or-n (setq visible-bell nil) ;; no bell (setq bidi-display-reordering nil) ;; disable bidirectional text support for slight performance bonus (setq column-number-mode t) ;; show column number in the mode line (global-set-key (kbd "M-j") 'join-line) (use-package recentf :hook (after-init . recentf-mode) :custom (recentf-max-saved-items 1000) (recentf-max-menu-items 25) (recentf-save-file-modes nil) (recentf-keep nil) (recentf-auto-cleanup nil) (recentf-initialize-file-name-history nil) (recentf-filename-handlers nil) (recentf-show-file-shortcuts-flag nil)) (use-package midnight :custom ;; every 6 hours (midnight-period (* 3600 6))) (use-package imenu :config (setq imenu-auto-rescan t)) (use-package autorevert :hook (after-init . global-auto-revert-mode) :custom (auto-revert-use-notify nil)) (use-package time :commands (world-clock) :hook (after-init . display-time-mode) :config (setq display-time-format " %a %e %b, %H:%M ") (setq display-time-24hr-format t) (setq display-time-interval 60) (setq display-time-default-load-average nil) (setq display-time-world-list t) ;; M-x shell RET timedatectl list-timezones (setq zoneinfo-style-world-list '(("America/Los_Angeles" "Berkeley") ("America/Chicago" "Chicago") ("UTC" "UTC") ("Europe/Paris" "Paris"))) ;; M-x world-clock (setq world-clock-list t) (setq world-clock-time-format "%z %R %a %d %b (%Z)") (setq world-clock-buffer-name "*world-clock*") ; Placement handled by `display-buffer-alist' (setq world-clock-timer-enable t) (setq world-clock-timer-second 60)) (use-package ibuffer :bind ("C-x C-b" . ibuffer) :custom (ibuffer-expert t) (ibuffer-show-empty-filter-groups nil) (ibuffer-jump-offer-only-visible-buffers t) (ibuffer-never-show-predicates '("^ ")) (ibuffer-use-other-window t) (ibuffer-filter-group-name-face '(:inherit (font-lock-string-face bold)))) (use-package which-key :diminish :hook (after-init . which-key-mode)) (use-package saveplace :config (save-place-mode t)) (use-package savehist :hook (after-init . savehist-mode) :custom (savehist-file (locate-user-emacs-file "savehist")) (history-length 100) (history-delete-duplicates t) (savehist-save-minibuffer-history t)) (use-package project :bind (("C-x p ." . project-dired) ("C-x p " . project-dired)) :custom (project-switch-commands '( (consult-project-buffer "buffer" ?b) (project-dired "dired" ?d) (magit-project-status "magit status" ?g) (project-find-file "find file" ?p) (consult-ripgrep "rigprep" ?r))) (setq project-mode-line t) (setq project-key-prompt-style t)) ; Emacs 30 (use-package rg :custom (rg-group-result t) (rg-show-columns t) (rg-align-line-number-field-length 3) (rg-align-column-number-field-length 3) (rg-align-line-column-separator "#") (rg-align-position-content-separator "|") (rg-hide-command nil) (rg-align-position-numbers t) (rg-command-line-flags '("--follow"))) (use-package dired :hook (dired-mode . dired-omit-mode) :bind (:map dired-mode-map ( "." . dired-omit-mode)) :custom (dired-listing-switches "-alh --group-directories-first") (ls-lisp-dirs-first t) (dired-omit-files (rx (seq bol "."))) (dired-use-ls-dired t) (dired-clean-up-buffers-too nil) (dired-dwim-target t) (dired-hide-details-hide-information-lines nil) (dired-hide-details-hide-symlink-targets nil) (dired-recursive-copies 'always) (dired-recursive-deletes 'always) (dired-no-confirm '(byte-compile chgrp chmod chown copy hardlink symlink touch))) (defun my/rename-this-buffer-and-file () "Renames current buffer and file it is visiting." (interactive) (let ((name (buffer-name)) (filename (buffer-file-name)) (read-file-name-function 'read-file-name-default)) (if (not (and filename (file-exists-p filename))) (error "Buffer '%s' is not visiting a file!" name) (let ((new-name (read-file-name "New name: " filename))) (cond ((get-buffer new-name) (error "A buffer named '%s' already exists!" new-name)) (t (rename-file filename new-name 1) (rename-buffer new-name) (set-visited-file-name new-name) (set-buffer-modified-p nil) (message "File '%s' successfully renamed to '%s'" name (file-name-nondirectory new-name)))))))) (provide 'init-base) ;;; init-base.el ends here