aboutsummaryrefslogtreecommitdiff
path: root/home/programs/emacs/site-lisp/init-base.el
diff options
context:
space:
mode:
Diffstat (limited to 'home/programs/emacs/site-lisp/init-base.el')
-rw-r--r--home/programs/emacs/site-lisp/init-base.el175
1 files changed, 175 insertions, 0 deletions
diff --git a/home/programs/emacs/site-lisp/init-base.el b/home/programs/emacs/site-lisp/init-base.el
new file mode 100644
index 0000000..0593833
--- /dev/null
+++ b/home/programs/emacs/site-lisp/init-base.el
@@ -0,0 +1,175 @@
+;;; init-base.el --- base configuration -*- lexical-binding: t -*-
+;; Author: Franck Cuny <franck@fcuny.net>
+
+;;; 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 <return>" . 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