diff --git a/kuso-base.el b/kuso-base.el index 9c44346..1b61e82 100644 --- a/kuso-base.el +++ b/kuso-base.el @@ -144,4 +144,40 @@ (setq powerline-color1 "grey22") (setq powerline-color2 "grey40") +;; Some File Utilities -------------------------------------- +(defun delete-current-buffer-file () + "Removes file connected to current buffer and kills buffer. + http://whattheemacsd.com/file-defuns.el-02.html" + (interactive) + (let ((filename (buffer-file-name)) + (buffer (current-buffer)) + (name (buffer-name))) + (if (not (and filename (file-exists-p filename))) + (ido-kill-buffer) + (when (yes-or-no-p "Are you sure you want to remove this file? ") + (delete-file filename) + (kill-buffer buffer) + (message "File '%s' successfully removed" filename))))) + +(defun rename-current-buffer-file () + "Renames current buffer and file it is visiting. + http://whattheemacsd.com/file-defuns.el-01.html" + (interactive) + (let ((name (buffer-name)) + (filename (buffer-file-name))) + (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))) + (if (get-buffer new-name) + (error "A buffer named '%s' already exists!" new-name) + (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))))))) + +(global-set-key (kbd "C-x C-k") 'delete-current-buffer-file) +(global-set-key (kbd "C-x C-e") 'rename-current-buffer-file) + (provide 'kuso-base)