This file is indexed.

/usr/share/emacs/site-lisp/reposurgeon-mode.el is in reposurgeon 3.37-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
;; A mode for editing the mailbox-like comment dumps produced by reposurgeon.
;;
;; Canonicalizing thousands of comments in a mailbox_out dump is the grottiest
;; part of lifting a repository, but if you don't do it you are probably going
;; to miss things that should turn into reference cookies.  This mode aims to
;; speed up the process.
;;
;; Work in progress - neither code nor bindings should be considered stable.

(defconst svn-log-delimiter
  "------------------------------------------------------------------------\n"
  "Delimiter line used in the output of svn log")

(defconst reposurgeon-mail-delimiter
  "------------------------------------------------------------------------------\n"
  "Delimiter line used in reposurgeon comment mailboxes.")

(defun decimal-digit-after ()
  (and (>= (char-after) ?0) (<= (char-after) ?9)))

(defun svn-cookify ()
  "Turn a Subversion revision number around point into a reference cookie."
  (interactive)
  (if (not (decimal-digit-after))
      (error "Expecting decimal digit."))
  (backward-word)
  ;; Ignore preceding r
  (if (= (char-after 1) ?r)
      (delete-char 1))
  (insert "[[SVN:")
  (while (decimal-digit-after)
    (forward-char 1))
  (insert "]]")
  )

(defun cvs-rev-char-after ()
  (or (== (char-after) ?.) (decimal-digit-after)))

(defun cvs-cookify ()
  "Turn CVS reference around point into a reference cookie."
  (interactive)
  (if (not (cvs-rev-char-after))
      (error "Expecting decimal digit or dot."))
  (backward-word)
  (insert "[[CVS:")
  (while (cvs-rev-char-after)
    (forward-char 1))
  (insert "]]")
  )

(defun gitify-comment ()
  "Break the first line of a paragraph comment following git conventions."
  (interactive)
  (delete-horizontal-space)
  (if (= (char-after) ?\n) (delete-char 1))
  (let ((c (char-before)))
	(cond ((member c '(?\. ?\! ?\?))
	       (insert "\n\n"))
	      ((member c '(?\, ?\: [semicolon] ?\,))
	       (insert "\n\n..."))
	      (t
	       (insert "...\n\n...")))))

(defun svn-reference-lift ()
  "Interactively lift probable SVN revision numbers into ref cookies en masse."
  (interactive)
  (query-replace-regexp "\\br\\([0-9][0-9]+\\)\\b" "[[SVN:\\1]]"))

(defun svn-lift-log ()
  "After pasting a segment of a Subversion log dump, this will fix delimiters
and headers so it's in the same format as the rest of the mailbox."
  (interactive)
  (while (re-search-forward (concat svn-log-delimiter "r\\([0-9]+\\).*") nil t)
    (replace-match (concat reposurgeon-mail-delimiter "Fossil-ID: \\1") nil nil)))

(defun bzr-reference-lift ()
  "Interactively lift probable Bazaar revision numbers into ref cookies en masse."
  (interactive)
  (query-replace-regexp "\\brevision \\([0-9][0-9.]+\\)\\b" "[[BZR:\\1]]"))

(defun clean-until-committer ()
  "Remove all headers from next mbox entry until Committer and Committer-Date."
  (interactive)
  (re-search-forward (concat "^" reposurgeon-mail-delimiter))
  (let ((kill-whole-line t))
    (while (not (looking-at "^Committer:\\|^$"))
      (kill-line)))
  )

(defun kill-comment-entry ()
  "Remove current mailbox entry, move to next."
  (interactive)
  (re-search-backward (concat "^" reposurgeon-mail-delimiter))
  (beginning-of-line)
  (forward-line 1)
  (let ((kill-whole-line t))
    (while (not (looking-at (concat "^" reposurgeon-mail-delimiter)))
      (kill-line))
    (kill-line))
  )

(defun svn-index ()
     "Show Subversion dump structure by eliding most lines."
     (interactive)
     (grep (format "egrep -nH -e \"Node-path|Revision-number|Node-copyfrom\" %s " (buffer-file-name))))

(defvar reposurgeon-mode-map nil "Keymap for reposurgeon-mode")

(when (not reposurgeon-mode-map)
  (setq reposurgeon-mode-map (make-sparse-keymap))
  (define-key reposurgeon-mode-map (kbd "C-x s") 'svn-cookify)
  (define-key reposurgeon-mode-map (kbd "C-x c") 'cvs-cookify)
  (define-key reposurgeon-mode-map (kbd "C-x .") 'gitify-comment)
  (define-key reposurgeon-mode-map (kbd "C-x C-k") 'kill-comment-entry)
  )

(define-derived-mode reposurgeon-mode
  text-mode "Reposurgeon"
  "Major mode for editing reposurgeon comment mailboxes.
\\{reposurgeon-mode-map}"
  (setq case-fold-search nil))

;; end