-
Notifications
You must be signed in to change notification settings - Fork 0
/
vc-dired.el
63 lines (48 loc) · 2.13 KB
/
vc-dired.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
;;; vc-dired.el --- Execute some vc commands in the dired-mode buffer -*- lexical-binding: t; -*-
;; Copyright (C) 2021 nilninull
;; Author: nilninull <nilninull@gmail.com>
;; Keywords: files
;; 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 <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Execute some vc commands in the dired-mode buffer
;; You can use below commands to the under cursor file or marked files.
;; setup example
;; (with-eval-after-load "vc-hooks"
;; (autoload 'vc-dired-do-register "vc-dired" nil t)
;; (autoload 'vc-dired-do-delete "vc-dired" nil t)
;; (autoload 'vc-dired-do-revert "vc-dired" nil t)
;; (define-key vc-prefix-map "R" 'vc-dired-do-register)
;; (define-key vc-prefix-map "X" 'vc-dired-do-delete)
;; (define-key vc-prefix-map "U" 'vc-dired-do-revert))
;;; Code:
(require 'vc)
(defmacro vc-dired-define-cmd (name &rest body)
""
`(defun ,(intern (format "vc-dired-do-%s" name)) ()
"This function defined by `vc-dired-define-cmd' macro."
(interactive)
(if (derived-mode-p 'dired-mode)
(dolist (file (dired-get-marked-files))
,@body)
(error "Please run this command in dired-mode buffer"))))
(vc-dired-define-cmd register
(cond ((vc-git-registered file)
(vc-git-register (list file)))
((vc-registered file)
(message "%s is already registered" file))
(t
(vc-register (list (vc-backend-for-registration file)
(list file))))))
(vc-dired-define-cmd delete (vc-delete-file file))
(vc-dired-define-cmd revert (vc-revert-file file))
(provide 'vc-dired)
;;; vc-dired.el ends here