diff --git a/site-modules/core/files/emacs/init.el b/site-modules/core/files/emacs/init.el index db00755..71b296c 100644 --- a/site-modules/core/files/emacs/init.el +++ b/site-modules/core/files/emacs/init.el @@ -30,6 +30,7 @@ ;; Genral and main configuration (load-file (expand-file-name "src/general.el" user-emacs-directory)) +(load-file (expand-file-name "src/file-operations.el" user-emacs-directory)) (load-file (expand-file-name "src/evil.el" user-emacs-directory)) (load-file (expand-file-name "src/ivy.el" user-emacs-directory)) (load-file (expand-file-name "src/projectile.el" user-emacs-directory)) diff --git a/site-modules/core/files/emacs/src/file-operations.el b/site-modules/core/files/emacs/src/file-operations.el new file mode 100644 index 0000000..9410a3b --- /dev/null +++ b/site-modules/core/files/emacs/src/file-operations.el @@ -0,0 +1,40 @@ +;;; file-operations.el --- AMACS -*- lexical-binding: t -*- +;; +;; Copyright 2021 Practically.io All rights reserved +;; +;; Use of this source is governed by a BSD-style +;; licence that can be found in the LICENCE file or at +;; https://www.practically.io/copyright/ + +(defun rename-current-file (new-name) + "Renames both current buffer and file it's visiting to NEW-NAME." + (interactive "FNew name: ") + (let ((name (buffer-name)) + (filename (buffer-file-name))) + (if (not filename) + (message "Buffer '%s' is not visiting a file!" name) + (if (get-buffer new-name) + (message "A buffer named '%s' already exists!" new-name) + (progn + (make-directory (file-name-directory new-name) t) + (rename-file filename new-name 1) + (rename-buffer new-name) + (set-visited-file-name new-name) + (set-buffer-modified-p nil)))))) + +(defun copy-current-file (new-name) + "Copies both current buffer and file it's visiting to NEW-NAME." + (interactive "FNew name: ") + (let ((name (buffer-name)) + (filename (buffer-file-name))) + (if (not filename) + (message "Buffer '%s' is not visiting a file!" name) + (if (get-buffer new-name) + (message "A buffer named '%s' already exists!" new-name) + (progn + (make-directory (file-name-directory new-name) t) + (copy-file filename new-name 1) + (find-file new-name) + (set-visited-file-name new-name) + (set-buffer-modified-p nil)))))) +