summary refs log tree commit diff
path: root/config/init-buffer.el
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2024-04-06 11:22:57 -0700
committerFranck Cuny <franck@fcuny.net>2024-04-06 11:22:57 -0700
commit7c5780a719565630f58e7751afa8c7e458c49871 (patch)
treef8863ebcbd4a1e551a63374b3fee589affca1393 /config/init-buffer.el
parentmove some display stuff (diff)
downloademacs.d-7c5780a719565630f58e7751afa8c7e458c49871.tar.gz
a org file is definitely not the way for me
Diffstat (limited to 'config/init-buffer.el')
-rw-r--r--config/init-buffer.el101
1 files changed, 101 insertions, 0 deletions
diff --git a/config/init-buffer.el b/config/init-buffer.el
new file mode 100644
index 0000000..c8688c6
--- /dev/null
+++ b/config/init-buffer.el
@@ -0,0 +1,101 @@
+;;; init-buffer.el --- Configure buffer -*- lexical-binding: t -*-
+;; Author: Franck Cuny <franck@fcuny.net>
+
+;;; Commentary:
+
+;; buffer related configurations
+
+;;; Code:
+
+(require 'ibuffer)
+(require 'ibuf-ext)
+
+(setq ibuffer-expert t)
+(setq ibuffer-show-empty-filter-groups nil)
+(setq ibuffer-jump-offer-only-visible-buffers t)
+(setq ibuffer-maybe-show-predicates '("^\\*.*\\*$"))
+(setq ibuffer-never-show-predicates '("^ "))
+(setq ibuffer-use-other-window t)
+
+(setq ibuffer-saved-filter-groups
+      '(("default"
+         ("Config" (or
+                    (filename . "world/")
+                    (filename . ".emacs/")))
+
+         ("Programming" (or
+                         (mode . c++-mode)
+                         (mode . c-mode)
+                         (mode . cargo-mode)
+                         (mode . emacs-lisp-mode)
+                         (mode . go-mode)
+                         (mode . java-mode)
+                         (mode . lisp-mode)
+                         (mode . nix-mode)
+                         (mode . python-mode)
+                         (mode . rust-mode)
+                         (mode . sh-mode)
+                         (name . "\\*Cargo")
+                         (name . "\\*Python.*\\*")))
+
+           ("Writing" (or
+                       (mode . plain-tex-mode)
+                       (mode . rst-mode)
+                       (mode . markdown-mode)
+                       (mode . html-mode)
+                       (mode . nxhtml-mode)
+                       (mode . css-mode)))
+
+           ("Org" (or
+                   (mode . org-agenda-mode)
+                   (mode . org-mode)))
+
+           ("Dired" (mode . dired-mode))
+
+           ("Terminals" (mode . term-mode))
+
+           ("Shells" (or
+                      (mode . eshell-mode)
+                      (mode . shell-mode)))
+
+           ("Magit" (or
+                     (mode . magit-mode)
+                     (name . "\\*magit-.*\\*")))
+
+           ("VC" (name . "\\*vc.*\\*"))
+
+           ("Emacs" (name . "^\\*.*\\*$")))))
+
+(add-hook 'ibuffer-mode-hook
+          (lambda ()
+            (ibuffer-auto-mode 1)
+            (ibuffer-switch-to-saved-filter-groups "default")))
+
+(require 'midnight)
+(setq midnight-period (* 3600 6))       ; every 6 hours
+
+(setq clean-buffer-list-delay-general 2           ; every 2 day
+      clean-buffer-list-delay-special (* 3600 3)) ; every 3 hours
+
+(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-buffer)
+
+;;; init-buffer.el ends here