41 lines
1.5 KiB
EmacsLisp
41 lines
1.5 KiB
EmacsLisp
|
|
;;; 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))))))
|
||
|
|
|