diff options
Diffstat (limited to 'configs/users/fcuny/emacs/site-lisp/init-base.el')
| -rw-r--r-- | configs/users/fcuny/emacs/site-lisp/init-base.el | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/configs/users/fcuny/emacs/site-lisp/init-base.el b/configs/users/fcuny/emacs/site-lisp/init-base.el new file mode 100644 index 0000000..7c884ab --- /dev/null +++ b/configs/users/fcuny/emacs/site-lisp/init-base.el @@ -0,0 +1,173 @@ +;;; 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-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 |
