;;; ravi-init-files.el --- file-handling ;; Copyright (C) 2013 ;; Author: ;; Keywords: ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; File handling ;;; Code: (setq delete-auto-save-files t) (setq dired-listing-switches "-Flag") (setq completion-ignored-extensions (append completion-ignored-extensions (quote (".bak" ".#*#" ".ps" ".pdf")))) ;; Auto refresh buffers (global-auto-revert-mode 1) ;; Also auto refresh dired, but be quiet about it (setq global-auto-revert-non-file-buffers t) (setq auto-revert-verbose nil) ;; Transparently open compressed files (auto-compression-mode t) ;; UTF-8 please (setq locale-coding-system 'utf-8) ; pretty (set-terminal-coding-system 'utf-8) ; pretty (set-keyboard-coding-system 'utf-8) ; pretty (set-selection-coding-system 'utf-8) ; please (prefer-coding-system 'utf-8) ; with sugar on top (setq history-length 100) (setq savehist-file (ravi/emacs-file "past/history")) (savehist-mode 1) (setq history-delete-duplicates t) (require 'saveplace) (setq-default save-place t) (setq save-place-file (ravi/emacs-file "past/places")) (require 'recentf) (setq recentf-save-file (ravi/emacs-file "past/recentf")) (recentf-mode 1) (setq recentf-max-saved-items 100) ;; just 20 is too recent (require 'uniquify) (setq uniquify-buffer-name-style 'post-forward) (setq uniquify-after-kill-buffer-p t) ; rename after killing uniquified (setq uniquify-ignore-buffers-re "^\\*") ; don't muck with special buffers (setq minibuffer-completion-confirm t) (setq find-file-confirm-nonexistent-file t) (setq find-file-visit-truename t) ;; Automatic loading of file trees (defun ravi-check-dir-accessible-p (name) "Check whether NAME is accessible as a directory" (let* ((topname (file-name-as-directory name)) (name-exists (and (file-exists-p topname) (file-directory-p topname) (file-accessible-directory-p topname) topname))) name-exists )) (defun ravi-filecache-add-tree (root recursive simple) "Add list of directories to filecache for easy opening. ROOT is the root of the tree to be added. RECURSIVE is a list of relative paths whose subdirectories are added recursively, while relative paths in SIMPLE are added non-recursively. If a path does not exist, it is not added to the filecache." (let ((topname (ravi-check-dir-accessible-p root)) (dirval nil)) (when topname (dolist (dir recursive) (setq dirval (ravi-check-dir-accessible-p (expand-file-name dir topname))) (and dirval (file-cache-add-directory-recursively dirval))) (dolist (dir simple) (setq dirval (ravi-check-dir-accessible-p (expand-file-name dir topname))) (and dirval (file-cache-add-directory dirval))) ))) ;; Write backup files to own directory (make-directory (ravi/emacs-file "past/backups/") t) (setq backup-by-copying t) (setq backup-directory-alist `(("." . ,(ravi/emacs-file "past/backups/")) (,tramp-file-name-regexp nil))) ;; Make backups of files, even when they're in version control (setq vc-make-backup-files t) ;; Git/svn/etc. projects (use-package projectile :init (use-package pkg-info :ensure t ) :config (projectile-global-mode) :diminish projectile-mode :ensure t ) (provide 'ravi-init-files) ;;; ravi-init-files.el ends here