system-manager-wakasu
1;;; config-files.el --- -*- lexical-binding: t; -*-
2;;; Commentary:
3;;; Files related configurations
4;;; Code:
5(use-package ffap
6 :hook
7 (after-init . ffap-bindings))
8;; (use-package autoinsert
9;; :init
10;; (setq-default auto-insert-query nil
11;; auto-insert-alist nil)
12;; :config
13;; (auto-insert-mode 1))
14
15(require 'hardhat)
16(global-hardhat-mode)
17
18(use-package files
19 :commands (revert-buffer)
20 :bind (("<f5>" . revert-buffer))
21 :config
22 (setq-default view-read-only t))
23
24(use-package envrc
25 :defer 2
26 :if (executable-find "direnv")
27 :bind (:map envrc-mode-map
28 ("C-c e" . envrc-command-map))
29 :config (envrc-global-mode))
30
31(use-package highlight-indentation
32 :unless noninteractive
33 :commands (highlight-indentation-mode highlight-indentation-current-column-mode)
34 :config
35 (set-face-background 'highlight-indentation-face "#e3e3d3")
36 (set-face-background 'highlight-indentation-current-column-face "#c3b3b3"))
37
38(defun vde/delete-this-file ()
39 "Delete the current file, and kill the buffer."
40 (interactive)
41 (or (buffer-file-name) (error "No file is currently being edited"))
42 (when (yes-or-no-p (format "Really delete '%s'?"
43 (file-name-nondirectory buffer-file-name)))
44 (delete-file (buffer-file-name))
45 (kill-this-buffer)))
46
47(defun vde/rename-this-file-and-buffer (new-name)
48 "Renames both current buffer and file it's visiting to NEW-NAME."
49 (interactive "sNew name: ")
50 (let ((name (buffer-name))
51 (filename (buffer-file-name)))
52 (unless filename
53 (error "Buffer '%s' is not visiting a file!" name))
54 (if (get-buffer new-name)
55 (message "A buffer named '%s' already exists!" new-name)
56 (progn
57 (when (file-exists-p filename)
58 (rename-file filename new-name 1))
59 (rename-buffer new-name)
60 (set-visited-file-name new-name)))))
61
62(bind-key "C-c f D" #'vde/delete-this-file)
63(bind-key "C-c f R" #'vde/rename-this-file-and-buffer)
64
65;; Additional bindings for built-ins
66(bind-key "C-c f v d" #'add-dir-local-variable)
67(bind-key "C-c f v l" #'add-file-local-variable)
68(bind-key "C-c f v p" #'add-file-local-variable-prop-line)
69
70(defun vde/reload-dir-locals-for-current-buffer ()
71 "Reload dir locals for the current buffer."
72 (interactive)
73 (let ((enable-local-variables :all))
74 (hack-dir-local-variables-non-file-buffer)))
75
76(defun vde/reload-dir-locals-for-all-buffers-in-this-directory ()
77 "Reload dir-locals for all buffers in current buffer's `default-directory'."
78 (interactive)
79 (let ((dir default-directory))
80 (dolist (buffer (buffer-list))
81 (with-current-buffer buffer
82 (when (equal default-directory dir))
83 (vde/reload-dir-locals-for-current-buffer)))))
84
85(bind-key "C-c f v r" #'vde/reload-dir-locals-for-current-buffer)
86(bind-key "C-c f v r" #'vde/reload-dir-locals-for-all-buffers-in-this-directory)
87
88(provide 'config-files)
89;;; config-files.el ends here