;;; oni-vc.el --- VC configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 2022.0302.154243 ;; Package-Requires: (vc-p4) ;; 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: ;; VC Configuration. ;;; Code: (require 'vc) (when (eql system-type 'windows-nt) (require 'vc-p4)) (defun oni-vc-maybe-checkout () "Call ‘vc-checkout’ if the current buffer is read-only and I'm typing." (when (and buffer-read-only (equal this-command 'self-insert-command)) (vc-checkout (buffer-file-name)))) ;;;###autoload (defun oni-vc-enable-auto-checkout-for-perforce () "Set up a ‘pre-command-hook’ to automatically check out a file if necessary." (when (equal (vc-backend (buffer-file-name)) 'P4) (add-hook 'pre-command-hook #'oni-vc-maybe-checkout nil t))) ;;;###autoload (add-hook 'find-file-hook 'oni-vc-enable-auto-checkout-for-perforce) (provide 'oni-vc) ;;; oni-vc.el ends here