From 4bcfb672357b5840249c72b28cb860001c4e3967 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Sun, 26 Jan 2014 02:00:22 -0500 Subject: Reorganize and use require-package `require-package' is from https://github.com/purcell/emacs.d/blob/master/lisp/init-elpa.el. --- lisp/init-buffile.el | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 lisp/init-buffile.el (limited to 'lisp/init-buffile.el') diff --git a/lisp/init-buffile.el b/lisp/init-buffile.el new file mode 100644 index 0000000..865e629 --- /dev/null +++ b/lisp/init-buffile.el @@ -0,0 +1,122 @@ +;;; Files and buffers + +(defun km/rename-current-buffer-file () + "Rename 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-r") 'km/rename-current-buffer-file) + +;; http://emacs-fu.blogspot.com/2013/03/editing-with-root-privileges-once-more.html +(defun km/find-file-as-root () + "`ido-find-file` that automatically edits the file with +root-privileges (using tramp/sudo) if the file is not writable by +user." + (interactive) + (let ((file (ido-read-file-name "Edit as root: "))) + (unless (file-writable-p file) + (setq file (concat "/sudo:root@localhost:" file))) + (find-file file))) + +(global-set-key (kbd "C-x F") 'km/find-file-as-root) + +(defun km/save-and-kill-buffer () + "Save current buffer and then kill it" + (interactive) + (save-buffer) + (kill-this-buffer)) + +(global-set-key (kbd "C-x K") 'kill-buffer-and-window) +(key-chord-define-global ",f" 'find-file) + +(key-chord-define-global ",s" 'save-buffer) +(key-chord-define-global ",q" 'kill-this-buffer) +(key-chord-define-global ",d" 'km/save-and-kill-buffer) +(key-chord-define-global ",e" '(lambda () + (interactive) + (save-buffer) + (server-edit))) + +;;; Ibuffer + +;; Replace buffer-menu with ibuffer. +(global-set-key (kbd "C-x C-b") 'ibuffer) + +;; Modified from http://martinowen.net/blog/2010/02/tips-for-emacs-ibuffer.html +;; and here http://www.elliotglaysher.org/emacs/. + +(setq ibuffer-saved-filter-groups + '(("home" + ("elisp" (mode . emacs-lisp-mode)) + ("org" (or (mode . org-mode) + (name . "^\\*Org Agenda\\*$") + (name . "^\\*Calendar\\*$"))) + ("web" (or (mode . html-mode) + (mode . nxml-mode) + (mode . css-mode) + (mode . less-css-mode))) + ("r" (or (mode . ess-mode) + (mode . inferior-ess-mode) + (name . "^\\*ESS\\*$"))) + ("markup" (or (mode . markdown-mode) + (mode . rst-mode))) + ("lua" (mode . lua-mode)) + ("perl" (mode . perl-mode)) + ("python" (or (mode . python-mode) + (name . "^\\*Python"))) + ("haskell" (mode . haskell-mode)) + ("text" (mode . text-mode)) + ("shell" (mode . sh-mode)) + ("latex" (or (mode . latex-mode) + (mode . LaTeX-mode) + (mode . bibtex-mode) + (mode . reftex-mode))) + ("dir" (or (mode . dired-mode) + (name . "^\\*tramp"))) + ("terminal" (or (mode . term-mode) + (name . "^\\*Shell Command Output*") + (name . "^\\*External terminal*"))) + ("packages" (or (name . "^\\*Compile-Log\\*") + (name . "^\\*Packages\\*"))) + ("magit" (name . "^\\*magit")) + ("emacs" (or (name . "^\\*scratch\\*$") + (name . "^\\*Messages\\*$"))) + ("mail" (or (mode . message-mode) + (mode . mail-mode) + (mode . gnus-group-mode) + (mode . gnus-summary-mode) + (mode . gnus-article-mode) + (mode . notmuch-search-mode) + (mode . notmuch-show-mode) + (name . "^\\*Mail sync\\*$") + (name . "^\\*Gnus sync\\*$") + (name . "^\\.newsrc-dribble"))) + ("help" (or (name . "^\\*Help\\*$") + (name . "^\\*Apropos\\*$") + (name . "^\\*info\\*$") + (name . "^\\*Completions\\*")))))) + +(add-hook 'ibuffer-mode-hook + '(lambda () + (ibuffer-auto-mode 1) ; Keep buffer list up-to-date. + (ibuffer-switch-to-saved-filter-groups "home"))) + +(setq + ;; Don't prompt to delete unmodified buffers. + ibuffer-expert t + ;; Don't show empty filter groups. + ibuffer-show-empty-filter-groups nil) + +(provide 'init-buffile) -- cgit v1.2.3