delete file and buffer, rename file/buffer, magit status
authorJoerg Jaspert <joerg@debian.org>
Sat, 14 Jun 2014 21:12:54 +0000 (23:12 +0200)
committerJoerg Jaspert <joerg@debian.org>
Sat, 14 Jun 2014 21:12:54 +0000 (23:12 +0200)
.emacs.d/config/emacs.org

index 42f9146..2af1b1b 100644 (file)
@@ -834,7 +834,46 @@ disabling that.
 #+BEGIN_SRC emacs-lisp :tangle yes
 (global-subword-mode 1)
 #+END_SRC
-
+*** Delete file of current buffer, then kill buffer
+[2014-06-14 Sat 23:03]
+#+BEGIN_SRC emacs-lisp :tangle yes
+(defun delete-current-buffer-file ()
+  "Removes file connected to current buffer and kills buffer."
+  (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)))))
+
+(global-set-key (kbd "C-x C-k") 'delete-current-buffer-file)
+#+END_SRC
+*** Rename file of current buffer
+[2014-06-14 Sat 23:04]
+#+BEGIN_SRC emacs-lisp :tangle yes
+(defun rename-current-buffer-file ()
+  "Renames current buffer and file it is visiting."
+  (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-S-r") 'rename-current-buffer-file)
+#+END_SRC
 ** Miscellaneous stuff
 Weeks start on Monday, not sunday.
 #+BEGIN_SRC emacs-lisp :tangle yes
@@ -2298,6 +2337,19 @@ magit is a mode for interacting with git.
               #'(lambda ()
                   (set-fill-column 72)
                   (flyspell-mode)))
+
+    (defadvice magit-status (around magit-fullscreen activate)
+      (window-configuration-to-register :magit-fullscreen)
+      ad-do-it
+      (delete-other-windows))
+
+    (defun magit-quit-session ()
+      "Restores the previous window configuration and kills the magit buffer"
+      (interactive)
+      (kill-buffer)
+      (jump-to-register :magit-fullscreen))
+
+    (bind-key "q" 'magit-quit-session magit-status-mode-map)
     ))
 #+END_SRC
 ** markdown-mode