;;; ravi-init-vc.el --- vc control ;; Copyright (C) 2013 ;; Author: ;; Keywords: vc ;; 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: ;; Version control initialization ;;; Code: ;; Git (use-package magit :bind ("" . magit-status) :config (progn (setq-default magit-process-popup-time 10 magit-diff-refine-hunk t magit-completing-read-function 'magit-ido-completing-read ) (require 'fullframe) (fullframe magit-status magit-mode-quit-window :magit-fullscreen nil) (use-package vc-git :defer t :bind ("C-x v f" . vc-git-grep) :config (progn (global-magit-wip-save-mode) (diminish 'magit-wip-save-mode) ) ) ;(after-load 'magit-key-mode ; (require 'magit-svn)) (after-load 'compile (dolist (defn (list '(git-svn-updated "^\t[A-Z]\t\\(.*\\)$" 1 nil nil 0 1) '(git-svn-needs-update "^\\(.*\\): needs update$" 1 nil nil 2 1))) (add-to-list 'compilation-error-regexp-alist-alist defn) (add-to-list 'compilation-error-regexp-alist (car defn)))) (use-package magit-svn :config (add-hook 'magit-mode-hook 'turn-on-magit-svn) :ensure t ) (defvar git-svn--available-commands nil "Cached list of git svn subcommands") (defun git-svn (dir) "Run a git svn subcommand in DIR." (interactive "DSelect directory: ") (unless git-svn--available-commands (setq git-svn--available-commands (sanityinc/string-all-matches "^ \\([a-z\\-]+\\) +" (shell-command-to-string "git svn help") 1))) (let* ((default-directory (vc-git-root dir)) (compilation-buffer-name-function (lambda (major-mode-name) "*git-svn*"))) (compile (concat "git svn " (ido-completing-read "git-svn command: " git-svn--available-commands nil t)))) ) (defun magit-toggle-whitespace () (interactive) (if (member "-w" magit-diff-options) (magit-dont-ignore-whitespace) (magit-ignore-whitespace))) (defun magit-ignore-whitespace () (interactive) (add-to-list 'magit-diff-options "-w") (magit-refresh)) (defun magit-dont-ignore-whitespace () (interactive) (setq magit-diff-options (remove "-w" magit-diff-options)) (magit-refresh)) (bind-key "W" 'magit-toggle-whitespace magit-status-mode-map) (defun magit-just-amend () (interactive) (save-window-excursion (magit-with-refresh (shell-command "git --no-pager commit --amend --reuse-message=HEAD")))) (bind-key "C-a" 'magit-just-amend magit-status-mode-map) ) :ensure t ) (use-package git-gutter :config (progn (use-package git-gutter-fringe :ensure t ) (global-git-gutter-mode 1) ) :ensure t :diminish git-gutter-mode ) (use-package git-commit-mode :ensure t ) (use-package git-rebase-mode :ensure t ) (use-package gitignore-mode :ensure t ) (use-package gitconfig-mode :ensure t ) (use-package git-messenger :ensure t :bind ("C-x v p" . git-messenger:popup-message) ) (provide 'ravi-init-vc) ;;; ravi-init-vc.el ends here